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).


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/


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


+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.


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/*

1

Anda dapat membedakan 2 direktori.

diff -r dir1 dir2

itu akan menampilkan daftar file yang berbeda

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.