Saya punya dua salinan folder
src/
dest/
Saya ingin menggabungkan mereka, melakukan hal berikut:
Jika file hanya di src
, saya ingin dipindahkandest
Jika file hanya di dest
, saya ingin mengabaikan IE yang ditinggalkan sendirian.
Jika file berada di keduanya dan memiliki konten yang identik (ukuran dan tanggal yang sama), hapus darisrc
Jika file ada di keduanya dan tidak memiliki konten yang identik, tinggalkan src
begitu sehingga saya dapat menggabungkannya secara manual.
Hanya sejumlah kecil file (antara 0% dan 5% dari total file) yang termasuk dalam kategori terakhir ini, tetapi saya tidak tahu bagaimana memisahkan keduanya dan sama dari keduanya, tetapi berbeda.
Saya sudah mencoba mencari cara melakukan ini dengan rsync
tetapi tidak berhasil sejauh ini.
for file in `find src/ -type f`; do diff $file `echo $file | sed 's/src/dest/'` && rm $file || echo $file; done
(Anda dapat melewati|| echo $file
jika Anda suka, itu sudah termasuk untuk kelengkapan)\?*[
,, inisial-
). Anda perlu menggunakan tanda kutip ganda di sekitar substitusi variabel , beralih--
ke utilitas sebelum nama file, gunakanfind … -exec …
bukannya parsing outputfind
. Denganrm
perintah dalam campuran, ini adalah resep untuk bencana.serentak adalah alat yang Anda cari. Coba serempak-gtk jika Anda lebih suka gui. Tapi saya tidak berpikir itu akan menghapus file yang serupa: serempak mencoba untuk memiliki kedua direktori yang sama. Namun demikian itu akan dengan mudah 1) mengidentifikasi file mana yang akan disalin; 2) mana yang perlu digabung secara manual.
sumber
Skrip berikut harus melakukan hal-hal yang wajar. Ini memindahkan file dari sumber ke tujuan, tidak pernah menimpa file dan membuat direktori yang diperlukan. File sumber yang memiliki file berbeda yang sesuai di tujuan dibiarkan sendiri, seperti juga file yang bukan file atau direktori biasa (mis. Tautan simbolik). File-file yang tersisa di sumber adalah mereka yang ada konflik. Hati-hati, saya belum mengujinya sama sekali.
Pendekatan lain adalah dengan melakukan union mount satu direktori di atas yang lain, misalnya dengan funionfs atau unionfs-fuse .
sumber