Bagaimana saya bisa menyalin direktori (besar) di atas yang lain hanya mengubah file yang berbeda?

14

Saya memiliki direktori a dan direktori b. Mereka besar. b hampir identik dengan a. "hampir" berarti 4-5 file berbeda, dan saya tidak tahu yang mana. Saya ingin menyalin b di atas, tetapi hanya file yang berbeda. saya di bash.

(tidak, saya tidak bisa menghapus a dan menggantinya dengan b, karena 1) a dikendalikan oleh versi 2) salinan lengkap (atau mv) akan terlalu banyak. Saya hanya ingin menyalin file yang berbeda).

konferensi janes
sumber
Apakah rsyncsebuah opsi?
Bobby
Memang, tapi saya tidak tahu banyak tentang rsync.
janesconference

Jawaban:

17

Anda dapat menggunakannya rsyncuntuk melakukan ini, perintah yang saya gunakan adalahrsync -tr "folder to copy from" "folder to copy to"

misalnya rsync -tr /home/me/stuff/* /home/me/otherstuff/

Mantel
sumber
1
WASPADALAH terhadap perintah ini. Ini akan menghapus semua file yang tidak akan berbeda. Saya menjalankannya dan HILANG hampir semuanya !!
Arvind K.
@ Arvind Saya tidak tahu perintah apa yang Anda gunakan yang menyebabkan Anda kehilangan data tetapi itu bukan rsync -tr. Baca halaman manual.
Tog
18

Dimungkinkan juga untuk melakukan ini dengan yang lama cp:

Terima kasih kepada srcspider untuk mengingatkan saya untuk menggunakan -T!

cp -ruT old-dir new-dir

baru123456
sumber
+1 Saya jadi terbiasa menyinkronkan di mesin, saya lupa cara elegan.
Tog
tidak bekerja untuk saya :(
janesconference
Itu sebenarnya bagus gnu cp. ;-)
Keith
1
Pada OS X, opsi -u tidak ada. Saya hanya menggunakan cp -r old-dir new-dir, karena saya tidak perlu membandingkan tanggal.
Jean-François Beauchamp
Tidak bekerja. Saya tidak yakin apakah ini adalah konvensi nama tetapi cp -ru folder-A folder-B hanya akan menyalin folder-A di dalam folder-B tidak menyalin konten A di dalam B dan menimpa, yang akan menjadi efek yang diinginkan.
srcspider
1

Opsi bagus lainnya adalah Unison ( http://www.cis.upenn.edu/~bcpierce/unison/ ), terutama jika tidak ada "sumber" dan "tujuan". Setiap direktori adalah root dan Unison menyinkronkannya dan menyimpan metadata untuk sinkronisasi di masa mendatang. Ia menawarkan baris perintah dan opsi GUI yang dapat dengan mudah dijadwalkan melalui cron juga.

Saya menggunakannya untuk membuat cadangan Dropbox saya ke alat NAS lokal saya yang tidak dapat menjalankan klien Dropbox.

Pertarungan digital
sumber
1

BISA dilakukan dengan ol 'cp yang baik, meskipun dengan format yang sedikit berbeda dari yang disebutkan di atas. Begini cara saya melakukannya:

cp -ru --target-directory="destination_path" source_path/*
Sven Croon
sumber
1

Anda dapat membedakan 2 direktori.

diff -r dir1 dir2

itu akan menampilkan daftar file yang berbeda

Oleg
sumber