Saya ingin menyalin satu set file dari direktori A ke direktori B, dengan peringatan bahwa jika file dalam direktori A identik dengan file dalam direktori B, file itu tidak boleh disalin (dan dengan demikian waktu modifikasi tidak boleh diperbarui). Apakah ada cara untuk melakukannya dengan alat yang ada, tanpa menulis skrip saya sendiri untuk melakukannya?
Untuk menguraikan sedikit kasus penggunaan saya: Saya membuat autogenerasi banyak .c
file dalam direktori sementara (dengan metode yang harus menghasilkan semuanya tanpa syarat), dan ketika saya membuat ulang, saya ingin menyalin hanya yang telah berubah menjadi direktori sumber aktual, membiarkan yang tidak berubah tidak tersentuh (dengan waktu kreasi lama mereka) sehingga make
akan tahu bahwa itu tidak perlu mengkompilasi ulang mereka. (Namun, tidak semua file yang dihasilkan adalah .c
file, jadi saya perlu melakukan perbandingan biner daripada perbandingan teks.)
(Sebagai catatan: Ini muncul dari pertanyaan yang saya ajukan di https://stackoverflow.com/questions/8981552/speeding-up-file-comparions-with-cmp-on-cygwin/8981762#8981762 , di mana saya mencoba untuk mempercepat file skrip yang saya gunakan untuk melakukan operasi ini, tetapi terpikir oleh saya bahwa saya benar-benar harus bertanya apakah ada cara yang lebih baik untuk melakukan ini daripada menulis skrip saya sendiri - terutama karena cara sederhana melakukan ini dalam shell skrip akan memanggil sesuatu seperti cmp
pada setiap pasangan file, dan memulai semua proses itu terlalu lama.)
rsync -avnc
atau jauh-jauh rsync --archive --verbose --dry-run --checksum
.
diff -qr dirA dirB
untuk melihat file apa yang unikdirA
dandirB
, secara repektif.