Tôi đang thực hiện một thay đổi nhỏ đối với tệp hình ảnh tệp rất lớn (chỉ chênh lệch một vài pixel), mất nhiều thời gian để truyền qua mạng.
Có cách nào để rsync xác định sự khác biệt trong tệp và chỉ gửi khác biệt nhỏ qua mạng không?
Tôi đang thực hiện một thay đổi nhỏ đối với tệp hình ảnh tệp rất lớn (chỉ chênh lệch một vài pixel), mất nhiều thời gian để truyền qua mạng.
Có cách nào để rsync xác định sự khác biệt trong tệp và chỉ gửi khác biệt nhỏ qua mạng không?
Câu trả lời:
rsync
thuật toán chuyển delta thực hiện điều này theo mặc định. Trích dẫn trang web rsync :
SỰ MIÊU TẢ
Rsync là một công cụ sao chép tập tin nhanh và cực kỳ linh hoạt. Nó có thể sao chép cục bộ, đến / từ một máy chủ khác trên bất kỳ shell từ xa nào hoặc đến / từ một daemon rsync từ xa. Nó cung cấp một số lượng lớn các tùy chọn kiểm soát mọi khía cạnh của hành vi của nó và cho phép đặc tả rất linh hoạt của tập hợp các tệp được sao chép. Nó nổi tiếng với thuật toán chuyển delta, giúp giảm lượng dữ liệu được gửi qua mạng bằng cách chỉ gửi sự khác biệt giữa các tệp nguồn và các tệp hiện có ở đích . Rsync được sử dụng rộng rãi để sao lưu và phản chiếu và như một lệnh sao chép được cải tiến để sử dụng hàng ngày.
Nếu bạn muốn tắt nó, bạn sẽ phải sử dụng tùy chọn -W
hoặc --whole-file
.
-W, - tập tin
Tùy chọn này vô hiệu hóa thuật toán chuyển delta của rsync, khiến cho tất cả các tệp được truyền được gửi toàn bộ. Việc truyền có thể nhanh hơn nếu tùy chọn này được sử dụng khi băng thông giữa máy nguồn và máy đích cao hơn băng thông vào đĩa (đặc biệt khi "đĩa" thực sự là một hệ thống tệp được nối mạng). Đây là mặc định khi cả nguồn và đích được chỉ định là đường dẫn cục bộ, nhưng chỉ khi không có tùy chọn ghi hàng loạt có hiệu lực.
Nếu bạn thực sự biết tập tin của bạn đã thay đổi bao nhiêu, bạn thậm chí có thể tối ưu hóa hành vi chuyển delta này bằng cách điều chỉnh kích thước khối delta của bạn:
-B, --block-size = BLOCKSIZE
Điều này buộc kích thước khối được sử dụng trong thuật toán chuyển delta của rsync thành một giá trị cố định. Nó thường được chọn dựa trên kích thước của mỗi tệp được cập nhật. Xem báo cáo kỹ thuật để biết chi tiết.
Và nếu bạn muốn biết thêm thông tin về chính thuật toán, bạn có thể tìm thấy nó ở đây: Thuật toán Rsync
rsync
mặc định theo cách này. Miễn là thay đổi nhỏ là một thay đổi nhỏ đối với tệp và tệp đã tồn tại ở cả hai phía của liên kết trong các phiên bản gần giống nhau, dữ liệu được truyền phải nhỏ hơn nhiều so với tổng kích thước tệp. Từ đoạn đầu tiên trong trang man: "Nó nổi tiếng với thuật toán chuyển delta, giúp giảm lượng dữ liệu được gửi qua mạng bằng cách chỉ gửi sự khác biệt giữa các tệp nguồn và các tệp hiện có ở đích."