rsync memiliki cara melakukan salinan yang terputus . Dengan kata lain, rsync dapat (secara konseptual) melakukan diff pohon direktori dan menghasilkan file tambalan yang kemudian Anda dapat terapkan pada sejumlah file yang identik dengan sumber aslinya.
Ini mengharuskan Anda memanggil rsync dengan master dan mirror with --write-batch
; menghasilkan file. Anda kemudian mentransfer file ini ke sejumlah target lain, dan Anda kemudian menerapkan batch untuk masing-masing target menggunakan --read-batch
.
Jika Anda menyimpan salinan lokal dari kondisi rsynced terakhir (yaitu salinan dari apa yang tampak seperti cermin sekarang) pada mesin yang sama dengan master, Anda dapat membuat "tambalan" ini pada master tanpa bahkan menghubungi mirror apa pun:
Pada tuan:
rsync --write-batch=my-batch.rsync /master/data /current/mirror
Tambahkan opsi apa pun yang Anda inginkan. Ini akan melakukan dua hal:
- Itu akan membuat
/current/mirror
perubahan untuk mencerminkan/master/data
- Ini akan membuat file patch biner (atau file batch) yang dipanggil
my-batch.rsync
untuk digunakan nanti.
Transfer my-batch.rsync
file dari master ke semua mirror Anda, dan kemudian di mirror, terapkan tambalan untuk berbicara:
rsync --read-batch=my-batch.rsync /local/mirror
Manfaat dari pendekatan ini:
- master tidak kebanjiran
- tidak perlu mengoordinasikan / memiliki akses ke master / cermin secara bersamaan
- orang yang berbeda dengan hak istimewa yang berbeda dapat melakukan pekerjaan pada master dan mirror (s).
- tidak perlu memiliki saluran TCP (ssh, netcat, apa pun; file dapat dikirim melalui e-mail ;-))
- cermin offline dapat disinkronkan nanti (bawa saja secara online dan terapkan tambalan)
- semua mirror dijamin identik (karena mereka menerapkan "patch" yang sama)
- semua mirror dapat diperbarui secara bersamaan (karena
--read-batch
hanya cpu / io intensif pada mirror itu sendiri)