Untuk menyinkronkan file besar atau memblokir perangkat dengan perbedaan rendah hingga sedang, Anda dapat melakukan penyalinan biasa atau menggunakan bdsync , rsync sama sekali tidak cocok untuk kasus khusus ini *.
bdsync
bekerja untuk saya, tampaknya cukup dewasa, itu sejarah bug yang menggembirakan (masalah kecil, resolusi cepat). Dalam pengujian saya, kecepatannya mendekati maksimum teoretis yang bisa Anda peroleh ** (artinya Anda dapat menyinkronkan waktu yang Anda perlukan untuk membaca file). Akhirnya open source dan tidak ada biaya.
bdsync
membaca file dari kedua host dan bertukar cek-jumlah untuk membandingkannya dan mendeteksi perbedaan. Semua ini pada saat bersamaan . Akhirnya membuat file tambalan terkompresi pada host sumber. Kemudian Anda memindahkan file itu ke host tujuan dan menjalankan bdsync untuk kedua kalinya untuk menambal file tujuan.
Saat menggunakannya melalui tautan yang agak cepat (misalnya ethernet 100Mbit) dan untuk file dengan perbedaan kecil (seperti yang sering terjadi pada disk VM) itu mengurangi waktu untuk menyinkronkan ke waktu Anda perlu membaca file. Melalui tautan lambat, Anda perlu sedikit lebih banyak waktu karena Anda harus menyalin perubahan yang dikompresi dari satu host ke host lain (sepertinya Anda dapat menghemat waktu menggunakan trik yang bagus tetapi belum diuji).
*: rsync sangat tidak efisien dengan file besar. Bahkan dengan --inplace pertama kali akan membaca seluruh file pada host tujuan, SETELAH mulai membaca file pada host sumber dan akhirnya mentransfer perbedaan (jalankan saja dstat atau serupa saat menjalankan rsync dan amati). Hasilnya adalah bahwa bahkan untuk file dengan perbedaan kecil dibutuhkan sekitar dua kali lipat waktu Anda perlu membaca file untuk menyinkronkannya.
**: Dengan asumsi bahwa Anda tidak memiliki cara lain untuk mengetahui bagian file apa yang telah berubah. Snapshots LVM menggunakan bitmap untuk merekam blok yang diubah sehingga mereka bisa menjadi sangat cepat (readme lvmsync memiliki lebih banyak info).