Saya telah menggunakan rsync untuk menyalin file selama beberapa waktu. Pemahaman saya adalah bahwa rsync lebih cepat daripada cp ketika beberapa file yang akan ditransfer sudah ada di direktori tujuan, hanya mentransfer perbedaan inkremental (yaitu "delta").
Jika ini benar, apakah akan ada keuntungan menggunakan rsync untuk memindahkan konten folder A , misalnya, folder B , dengan B kosong?
Folder A memiliki hampir 1TB data (dan jutaan file di dalamnya). Transfer akan dilakukan melalui jaringan lokal ( A dan B berada di sistem file yang berbeda , keduanya dipasang pada superkomputer, misalnya A adalah NFS dan B adalah kilau ).
Selain itu, flag apa yang harus saya gunakan untuk meminta rsync untuk memindahkan (bukan menyalin) file dari A ke B (yaitu untuk menghapus A ketika transfer telah berhasil selesai)?
rsync
bisa menggantikanmv
. Saya berharapmv
untuk menjadi lebih cepat pada sebagian besar jenis sistem file ketika sumber dan tujuan berada dalam sistem file yang sama, karenarsync
harus membuat salinan tidak peduli apa, danmv
mungkin bisa lolos dengan mengubah beberapa entri direktori. Hal terdekat yang dapat saya temukanrsync mv
adalah--remove-source-files
perintah, tetapi itu tidak menghapus direktori.mv
lebih cepat?mv
tidak dapat beroperasi di jaringan - itu harus mengandalkan mount lokal (misalnya NFS). Jika bottleneck adalah jaringan,rsync
mungkin akan lebih cepat daripadamv
karenarsync
bisa melakukan kompresi.cp
memiliki-u
opsi untuk menyalin file sumber jika lebih baru dari file tujuan atau ketika file tujuan hilangJawaban:
Anda dapat beralih
--remove-source-files
ke rsync untuk memindahkan file alih-alih menyalinnya.Tetapi dalam kasus Anda, tidak ada gunanya menggunakan rsync, karena tujuannya kosong. Sebuah dataran
mv
akan melakukan pekerjaan itu secepat mungkin.Dalam kasus Anda, apa yang dapat membuat perbedaan pada kinerja adalah pilihan protokol jaringan, jika Anda memiliki pilihan di antara NFS, Samba, sshfs, sftp, rsync over ssh, tar disalurkan ke ssh, dll. Kecepatan relatif dari metode ini tergantung pada ukuran file, bandwidth jaringan dan disk, dan faktor lainnya, jadi tidak ada cara untuk memberikan saran umum, Anda harus menjalankan tolok ukur sendiri.
sumber
--remove-source-files
hanya akan menghapus file dalam sumber. jika Anda ingin menghapus sumber kami, tidakkah Anda harus melakukan rm -rf (ataufind
semua direktori dan pass-delete
) pada sumber setelah rsync berjalan dengan sukses?--checksum
mengatakannya untuk memverifikasi hasil sinkronisasi pertama.Karena
--remove-source-files
tidak menghapus direktori, saya mengeluarkan perintah berikut untuk memindahkan file ke ssh:Saya pribadi suka
--progress
fitur ini, karena saya melakukan transfer ini secara manual. Hapus jika Anda menggunakan skrip. Saya berharap itu memperlambat transfer secara marjinal. Thefind
opsi menghapus perintah hanya menghapus direktori kosong - tidak menggunakanrm -rf
, karena dapat menghapus direktori yang tidak kosong dalam kasus file tidak ditransfer. The-delete
pilihan bergantian pada-depth
pilihan sehingga pohon direktori kosong dihapus dari "bawah" up.sumber
-delete
jauh lebih baik daripada-exec rmdir {} +
dllSecara umum seperti yang dikatakan Gilles tidak ada keuntungan menggunakan
rsync
memindahkan file ketikamv
akan mendapatkan pekerjaan yang sama dilakukan lebih sederhana dan tidak ada potensi kecepatan perolehan antara sistem file biasa.Namun ada kalanya ada keuntungan. Secara khusus, jika Anda memiliki keraguan tentang stabilitas sumber, tujuan, atau mesin yang melakukan pekerjaan, menggunakan
rsync
memberi Anda kemampuan melanjutkan. Ini bisa menjadi keuntungan penting jika Anda mentransfer sangat besar dan, katakanlah, jaringan listrik Anda tidak dapat diandalkan. Menggunakan rsync akan menjadi cara yang lebih stabil untuk menghindari korupsi data jika terjadi kegagalan dan mengambil di mana Anda tinggalkan.sumber
mv
hanya lebih baik jika target dan sumbernya berada di partisi yang sama, sehinggamv
hanya mengedit metadata file daripada melakukan salinan.rsync
daripada mv adalah ketika saya ingin mempertahankan struktur folder (jika Anda menggunakan--relative
).Saya menemukan diri saya dalam situasi di mana rsync IS lebih cepat daripada mv hanya karena mv tidak dapat menangani jumlah file dalam direktori. Saya memiliki 1,8 juta foto dari kamera keamanan yang berjalan selama 20 hari dan perintah mv keluar dengan gagal karena tidak dapat mengalokasikan sumber daya.
rsync Namun, tampaknya menangani semua file tanpa masalah.
sumber
Jika Anda ingin menggabungkan direktori secara rekursif ... pindahkan satu direktori ke direktori lain yang berpotensi menduplikasi nama direktori, maka silakan lihat jawaban saya di sini di serverfault.com.
mv
melakukan pekerjaan yang buruk ketika direktori ada dengan nama yang sama, danrsync
menyalin (baca + tulis data lengkap) setiap file alih-alih hanya memindahkannya (baca dan tulis hanya metadata).sumber
Tidak ada cara untuk benar-benar memindahkan file menggunakan rsync seperti yang dilakukan perintah Linux mv. Dengan menggunakan --remove-source-file, Anda pada dasarnya menyalin file ke tujuan dan kemudian menghapus file (kecuali direktori) dari sumbernya. Ini mungkin mencapai tujuan Anda untuk memindahkan file tetapi Anda TIDAK akan menghemat waktu atau operasi i / o.
sumber