Menyalin file hanya ketika lebih baru dari tujuan

35

Bagaimana cara menyalin file di Linux hanya ketika file yang disalin lebih baru daripada versi di tujuan?

Jika file di tujuan lebih baru, saya ingin salinan file tidak dilanjutkan.

Eli
sumber

Jawaban:

16

Gunakan rsync

rsync --progress -r -u /from/one/* /to/another/directory
gnod
sumber
3
Hanya untuk kelengkapan: -rberarti operasi rekursif ke dalam subdirektori dan -umenyimpan file yang lebih baru di tempat tujuan (= memperbarui). --progressmenunjukkan informasi kemajuan selama operasi.
Jörg Gottschlich
4

Anda tidak mengatakan shell apa yang Anda gunakan, jadi saya akan berasumsi ksh:

if [[ file1 -nt file2 ]]; then cp file1 file2; fi
Kusalananda
sumber
Bukankah bash paling umum?
Rob
@Rob, ya. Ini bekerja di bash juga, jelas. Saya hanya tidak memiliki bash (atau kotak Linux standar) di tangan ketika saya menulisnya.
Kusalananda
4

yes|cp -ruv /from/* /to/.
ya - Jawab ya untuk semua pertanyaan.
r - Rekursif
u - pembaruan
v - Kemajuan

bekerja seperti xargs .

Saya tidak tahu bagaimana menjelaskannya secara akademis.

Cara memaksa cp untuk menimpa tanpa konfirmasi

Felippe Silvestre
sumber
Ini agak samar. Bisakah Anda memperluas jawaban Anda menjadi sedikit lebih eksplisit, mungkin menyertakan contoh? Terima kasih. dari Ulasan
fixer1234
ya -> Jawab ya untuk semua pertanyaan.
Felippe Silvestre