Để đồng bộ hóa các tệp lớn hoặc thiết bị chặn với sự khác biệt từ thấp đến trung bình, bạn có thể sao chép đơn giản hoặc sử dụng bdsync , rsync hoàn toàn không phù hợp với trường hợp cụ thể này *.
bdsync
làm việc cho tôi, có vẻ đủ trưởng thành, lịch sử lỗi là đáng khích lệ (vấn đề nhỏ, giải quyết kịp thời). Trong các thử nghiệm của tôi, tốc độ của nó gần bằng mức tối đa về mặt lý thuyết mà bạn có thể nhận được ** (đó là bạn có thể đồng bộ hóa trong khoảng thời gian bạn cần đọc tệp). Cuối cùng, nó là nguồn mở và không có chi phí.
bdsync
đọc các tập tin từ cả hai máy chủ và trao đổi tổng kiểm tra để so sánh chúng và phát hiện sự khác biệt. Tất cả những điều này cùng một lúc . Cuối cùng nó tạo ra một tệp vá nén trên máy chủ nguồn. Sau đó, bạn di chuyển tệp đó đến máy chủ đích và chạy bdsync lần thứ hai để vá tệp đích.
Khi sử dụng nó qua một liên kết khá nhanh (ví dụ ethernet 100Mbit) và đối với các tệp có sự khác biệt nhỏ (thường xảy ra trên các đĩa VM), nó sẽ giảm thời gian đồng bộ hóa với thời gian bạn cần đọc tệp. Qua một liên kết chậm, bạn cần thêm một chút thời gian vì bạn phải sao chép các thay đổi được nén từ máy chủ này sang máy chủ khác (có vẻ như bạn có thể tiết kiệm thời gian bằng một thủ thuật hay nhưng chưa được thử nghiệm).
*: rsync cực kỳ kém hiệu quả với các tệp lớn. Ngay cả với --inplace, trước tiên nó sẽ đọc toàn bộ tệp trên máy chủ đích, SAU KHI bắt đầu đọc tệp trên máy chủ nguồn và cuối cùng chuyển các khác biệt (chỉ chạy dstat hoặc tương tự trong khi chạy rsync và quan sát). Kết quả là ngay cả đối với các tệp có sự khác biệt nhỏ, sẽ mất khoảng gấp đôi thời gian bạn cần đọc tệp để đồng bộ hóa.
**: Theo giả định rằng bạn không có cách nào khác để nói phần nào của tệp đã thay đổi. Ảnh chụp nhanh LVM sử dụng bitmap để ghi lại các khối đã thay đổi để chúng có thể cực kỳ nhanh hơn (Readme của lvmsync có nhiều thông tin hơn).