Lanjutkan transfer satu file oleh rsync

22

Di Ubuntu, saya ingin menyalin file besar dari harddisk saya ke drive yang dapat dilepas oleh rsync. Untuk beberapa alasan atau lainnya, operasi tidak dapat diselesaikan dalam sekali jalan. Jadi saya mencoba mencari cara menggunakan rsync untuk melanjutkan menyalin file dari tempat file itu ditinggalkan terakhir kali.

Saya telah mencoba menggunakan opsi --partial atau --inplace, tetapi bersama dengan --progress, saya menemukan rsync dengan --partial atau --inplace sebenarnya dimulai dari awal alih-alih dari apa yang tersisa terakhir kali. Menghentikan rsync secara dini dan memeriksa ukuran file yang diterima juga mengkonfirmasi apa yang saya temukan.

Tetapi dengan --append, rsync dimulai dari apa yang tersisa terakhir kali.

Saya bingung ketika saya melihat di halaman manual --partial, --inplace atau --append tampaknya berhubungan dengan melanjutkan penyalinan dari apa yang tersisa terakhir kali. Bisakah seseorang menjelaskan perbedaannya? Mengapa --partial atau --inplace tidak berfungsi untuk melanjutkan salinan? Apakah benar bahwa untuk melanjutkan salinan, rsync harus bekerja dengan opsi - append?

Juga jika sebagian file ditinggalkan oleh mv atau cp bukan oleh rsync, apakah rsync --append benar?

Terima kasih dan salam!

Tim
sumber
Pemahaman saya tentang bagaimana rsync bekerja terbatas, tetapi untuk menjawab pertanyaan terakhir Anda. Jika cp tidak lengkap, rsync harus melanjutkan salinan. Saya percaya file hass rsync dengan cara yang akan menemukan bagian awal file yang sama, dan menyalin bagian file yang tersisa.
Scott McClenning

Jawaban:

25

Melihat beberapa halaman untuk rsync:

--append
Ini menyebabkan rsync memperbarui file dengan menambahkan data ke bagian akhir file, yang menganggap bahwa data yang sudah ada di sisi penerima identik dengan awal file di sisi pengiriman.

--inplace
Opsi ini mengubah cara rsync mentransfer file ketika datanya perlu diperbarui: alih-alih metode default untuk membuat salinan baru file dan memindahkannya ke tempatnya ketika selesai, rsync sebagai gantinya menulis data yang diperbarui langsung ke file tujuan.

--partial
Secara default, rsync akan menghapus file yang ditransfer sebagian jika transfer terputus. Dalam beberapa keadaan lebih baik menyimpan file yang ditransfer sebagian.

Kedengarannya seperti jika file tersebut sangat besar, Anda ingin menggunakannya --partial --append. ( --appendtersirat --inplace) Jika file besar ini berubah, maka jatuhkan --appenddan rsync akan memeriksa awal file untuk memastikannya juga cocok dengan file sumber. --inplacebagi saya kedengarannya berbahaya, kecuali jika Anda rsyncing file besar, Anda tidak ingin rsync membuat file sementara baru dari bagian awal, melanjutkan transfer, lalu hapus file lama untuk meletakkan file baru di tempatnya. Transfer akan lebih cepat jika Anda dapat menggunakan file yang sama, belum lagi ruang disk yang diperlukan untuk transfer akan lebih sedikit.

Juga, saya telah menemukan dari seluruh stand stand transfer file salinan lebih cepat dari rsync. Namun, jika saya perlu memperbarui file, saya sudah mensinkronisasi file rsync lebih cepat daripada mentransfer kembali seluruh file lagi. (seperti yang saya katakan di atas) Rsync harus dapat melanjutkan dari cp.

Saya harap ini membantu.

Scott McClenning
sumber
1
Anda mungkin ingin melihat laporan bug ini: lists.samba.org/archive/rsync/2012-June/027615.html
Stefan Schmidt
Poin bagus tentang penggunaan cp yang lebih cepat secara default, dan rsync untuk "memperbaiki" proses cp yang rusak! Rapi :)
Samuel Lampa