Mengganggu rsync dengan ctrl-c, haruskah saya menggunakan `--partial` atau` --append`?

14

Saya ingin mengganggu rsyncdengan ctrl-c(katakanlah setelah setengah file tersebut ditransfer) dan melanjutkan tanpa harus mengirim ulang data yang telah ditransfer.

Informasi stackexchange / google yang saya temukan tampaknya saling bertentangan. Saya menemukan beberapa yang mengatakan menggunakan --partialdan beberapa yang mengatakan menggunakan --append. Bagi saya kedengarannya mereka berdua akan bekerja.

Jika saya ingin menginterupsi rsync dengan ctrl-c, haruskah saya menggunakan --partialatau --append?

Jika keduanya bekerja, kapan lebih baik menggunakan satu vs yang lain?

Trevor Boyd Smith
sumber

Jawaban:

8

Untuk me-restart, --partialsudah cukup. Gunakan --inplacejika Anda benar-benar tidak ingin rsyncmembuat file sementara yang menggabungkan data yang disalin dan yang baru, misalnya jika rsyncakan memiliki masalah izin membuat file sementara di folder target.

Hanya gunakan --appendjika Anda dapat menjamin bahwa data yang disalin sebagian masih identik dengan sumbernya. (Umumnya ini adalah optimasi salah.)

roaima
sumber
1
jadi ketika saya menggunakan opsi di atas (sebenarnya menggunakan --append-verifikasi) dan rsync masih mengklaim itu dimulai dari awal, dan saya tidak melihat perubahan dalam ukuran file dan sisa waktu file adalah apa yang awalnya ketika saya mulai menyalin, apakah rsync berbohong, atau haruskah saya khawatir?
Michael
@Michael jika Anda memiliki sumber dan tujuan lokal, semua peraturan berubah.
roaima
Saya melakukannya di LAN, tetapi setelah sedikit bereksperimen, tampaknya masalahnya adalah karena --append-verifysebenarnya harus benar-benar membaca bagian-bagian file di kedua sisi yang ada, t tidak ada yang lebih cepat karena hambatan menjadi drive yang lebih tua di sisi baca dan bukan LAN itu sendiri.
Michael
@ Michael ya, jika Anda sudah meminta verifikasi data yang sudah dikirim maka harus membaca data!
roaima
1
@ alper Saya tidak pernah memperhatikan opsi itu sebelumnya. Sepertinya itu yang terbaik untuk digunakan --partial-dir, tapi saya belum mencobanya.
roaima
3
  • --append menganggap file tersebut mungkin sudah ada di tujuan, itu hanya membuat rsync tidak memeriksa konten yang sudah ada (tetapi lihat di bawah).
  • --partial memberitahu rsync untuk tidak menghapus file yang ditransfer sebagian.

Anda juga harus --inplacedengan --partial(itu tersirat dengan --append).

Ternyata --inplacesebenarnya menyiratkan --partial, inilah sebabnya --appendcukup (itu menyiratkan --inplaceyang menyiratkan --partial). Tapi itu --partialsaja tidak cukup, Anda perlu --inplace, jika tidak rsync membuat file temp bukan memperbarui yang terakhir.

spuk
sumber
Jika saya ingin mengganggu rsync dengan ctrl-c, saya akan gunakan --append? Karena --partialdengan sendirinya tidak akan melanjutkan.
Trevor Boyd Smith
Saya hanya menggunakan --inplace. rsync "always resume" (mencoba mentransfer data minimal yang diperlukan). Apa yang --appenddilakukan adalah memberitahu rsync untuk tidak memeriksa data yang sudah ada di tujuan, jadi jika sebagian file di tujuan telah rusak, itu akan tetap rusak --append. --appendmungkin menarik jika, katakanlah, file parsial sangat besar dan Anda tidak bisa menunggu (dan yakin atau tidak peduli apakah itu rusak), atau situasi tertentu lainnya.
spuk
1
pada Fedora 20 man rsync, opsi --appendmengatakan... Implies --inplace
Trevor Boyd Smith
1
--inplaceakan bekerja. --appendakan bekerja karena (seperti yang saya sebutkan dalam jawaban) itu menyiratkan --inplace, yang menyiratkan --partial(yang akan menyimpan sebagian file yang ditransfer ketika terganggu oleh Ctrl-c, yang merupakan pertanyaan asli). Jadi --appendberarti "lakukan sebagai --inplace, tetapi jangan checksum apa yang sudah ada di tujuan . Ini adalah perbedaan penting. Jika Anda tidak peduli tentang hal itu, gunakan keduanya.
spuk
1
jadi apa gunanya --partial TANPA --inplace
Evan Carroll