Apakah menggunakan rsync saat sumber sedang diperbarui aman?

19

Apakah aman untuk digunakan rsyncketika sistem file sumber di-mount dan dapat ditulisi, dengan asumsi bahwa itu mungkin sangat dimodifikasi saat rsync sedang berjalan? Saya menganggap bahwa dalam kondisi balapan saya mungkin tidak mendapatkan modifikasi terbaru, tetapi apakah ada risiko korupsi?

brianmearns
sumber
1
Apakah Anda khawatir tentang konsistensi (antara file, seperti file data dan beberapa file metadata terkait, log atau semacamnya) atau korupsi (dalam satu file) jika terjadi perubahan?
CVn
Poin baiknya, saya belum mempertimbangkan konsistensi antar file. Saya tidak mengira rsyncbenar-benar bisa melakukan apa-apa tentang itu, hanya snapshot yang bisa, tetapi saya lebih khawatir tentang korupsi dalam file.
brianmearns

Jawaban:

20

Penggunaannya rsynccukup aman pada sistem file yang terpasang baca-tulis. Ketika rsyncmulai itu membangun daftar file dan kemudian mulai menyalin file-file itu. Daftar file ini tidak diperbarui selama proses. Data aktual kemudian disalin.

Ini berarti ketika file berubah setelah rsync membuat daftar file, itu akan menyalin konten baru . Namun, ketika file baru ditambahkan setelah rsyncmembangun daftar file, file baru ini tidak disalin. Jika file dihapus setelah rsyncmembangun daftar file, rsync akan memperingatkan bahwa itu tidak dapat menyalin file itu. Perlu diingat bahwa rsyncini bukan snapshot, ini artinya sulit untuk mengatakan pada titik mana waktu rsyncmenyalin data.

Snapshot sistem file atau volume manager (misalnya menggunakan ZFS atau LVM), di sisi lain, dibuat secara instan dan merupakan snapshot yang konsisten dari sistem file pada titik waktu yang ditentukan yang kemudian dapat disalin ke host lain. rsynctidak menawarkan konsistensi semacam ini.

EDIT: Seperti yang orang lain tunjukkan dalam komentar, ada kemungkinan yang rsyncbenar-benar merusak file Anda. Ketika rsync mulai membaca file dan aplikasi sedang menulis file itu pada saat yang sama, Anda mungkin berakhir dengan file yang rusak.

Marco
sumber
2
Menambahkan catatan pada file yang dihapus. Mungkin akan memberikan ini upvote lain jika saya bisa untuk snapshot volume manajer + saran rsync. Satu-satunya hal yang saya rasa jawaban ini hilang adalah perilaku rsync ketika file pada sumber diubah di tengah disalin. Saya ragu itu menangani itu dengan baik, meskipun.
CVn
Sepakat. Jika Anda ingin file tertentu konsisten, Anda memerlukan dukungan sistem operasi?
Thorbjørn Ravn Andersen
1
Jawaban ini berlaku asalkan aplikasi di sisi sumber pertama menulis ke file sementara, kemudian memindahkannya ke tempatnya. Jika aplikasi membuka file yang sudah ada untuk menulis sementara rsync kebetulan membaca file itu, rsync dapat menyalin campuran yang rusak dari versi lama dan baru.
Gilles 'SO- stop being evil'
@Gilles Terima kasih telah menunjukkan itu. Saya memperbarui jawaban saya. Apakah ini terkait dengan rsync atau hal ini terjadi untuk setiap aplikasi yang berbunyi sementara aplikasi lain menulis ke file yang sama?
Marco
1
@ Mars Itu akan terjadi dengan aplikasi apa pun, kecuali keduanya menggunakan beberapa protokol penguncian (unix tidak memiliki kunci wajib, hanya kunci penasehat, yaitu kunci yang hanya berfungsi jika semua orang menggunakannya). Itu sebabnya protokol normal untuk memodifikasi file jika modifikasi bersamaan adalah untuk menulis file sementara lalu memindahkannya ke tempatnya.
Gilles 'SO- stop being evil'