rsync có cách thực hiện các bản sao bị ngắt kết nối . Nói cách khác, rsync có thể (theo lý thuyết) diff một cây thư mục và tạo ra một bản vá tập tin mà bạn rồi sau đó có thể áp dụng trên mọi số lượng file được trùng với nguồn gốc.
Nó yêu cầu bạn gọi rsync với chủ và nhân với --write-batch
; nó tạo ra một tập tin Sau đó, bạn chuyển tệp này sang bất kỳ số lượng mục tiêu nào khác và sau đó bạn áp dụng lô cho từng mục tiêu đó bằng cách sử dụng --read-batch
.
Nếu bạn giữ một bản sao cục bộ của trạng thái rsynced cuối cùng (tức là bản sao của các gương trông giống như bây giờ) trên cùng một máy với chủ, bạn có thể tạo "bản vá" này trên bản gốc mà không cần liên hệ với bất kỳ gương nào:
Về chủ:
rsync --write-batch=my-batch.rsync /master/data /current/mirror
Thêm bất cứ lựa chọn nào khác mà bạn muốn. Điều này sẽ làm hai việc:
- Nó sẽ
/current/mirror
thay đổi để phản ánh/master/data
- Nó sẽ tạo một tệp vá nhị phân (hoặc tệp bó) được gọi
my-batch.rsync
để sử dụng sau.
Chuyển my-batch.rsync
tệp từ bản gốc sang tất cả các gương của bạn, rồi trên gương, áp dụng bản vá để nói:
rsync --read-batch=my-batch.rsync /local/mirror
Lợi ích của phương pháp này:
- chủ nhân không bị đầm lầy
- không cần phối hợp / có quyền truy cập vào máy chủ / gương cùng một lúc
- những người khác nhau với các đặc quyền khác nhau có thể thực hiện công việc trên chủ và gương.
- không cần phải có kênh TCP (ssh, netcat, bất cứ điều gì; tệp có thể được gửi qua e-mail ;-))
- gương ngoại tuyến có thể được đồng bộ hóa sau (chỉ cần mang chúng trực tuyến và áp dụng bản vá)
- tất cả các gương được đảm bảo giống hệt nhau (vì chúng áp dụng cùng một "miếng vá")
- tất cả các gương có thể được cập nhật đồng thời (vì
--read-batch
chỉ cpu / io chuyên sâu trên chính gương)