Thông thường, rsync
bỏ qua các tệp khi các tệp có kích thước và thời gian giống hệt nhau ở phía nguồn và đích. Đây là một heuristic thường là một ý tưởng tốt, vì nó ngăn không rsync
phải kiểm tra nội dung của các tệp rất giống nhau ở phía nguồn và đích.
--ignore-times
yêu rsync
cầu tắt heuristic theo thời gian và kích thước tệp, và do đó chuyển vô điều kiện TẤT CẢ các tệp từ nguồn sang đích. rsync
sau đó sẽ tiến hành đọc mọi tệp ở phía nguồn, vì nó sẽ cần sử dụng thuật toán chuyển delta hoặc đơn giản là gửi toàn bộ tệp, tùy thuộc vào việc --whole-file
tùy chọn có được chỉ định hay không.
--checksum
cũng sửa đổi heuristic lần và kích thước tệp, nhưng ở đây nó bỏ qua thời gian và chỉ kiểm tra kích thước. Các tệp ở phía nguồn và đích khác nhau về kích thước được truyền đi, vì chúng rõ ràng là khác nhau. Các tệp có cùng kích thước được kiểm tra lại (với MD5 trong rsync
phiên bản 3.0.0+ hoặc với MD4 trong các phiên bản trước đó) và các tệp được tìm thấy có tổng tiền khác nhau cũng được chuyển.
Trong trường hợp các mặt nguồn và đích gần như giống nhau, --checksum
sẽ dẫn đến hầu hết các tệp được kiểm tra ở cả hai phía. Điều này có thể mất nhiều thời gian, nhưng kết quả cuối cùng là dữ liệu tối thiểu nhất sẽ thực sự được truyền qua dây, đặc biệt là nếu thuật toán chuyển delta được sử dụng. Tất nhiên, đây chỉ là một chiến thắng nếu bạn có mạng rất chậm và / hoặc CPU rất nhanh.
--ignore-times
mặt khác, sẽ gửi thêm dữ liệu qua mạng và nó sẽ khiến tất cả các tệp nguồn được đọc, nhưng ít nhất nó sẽ không đặt thêm gánh nặng cho việc tính toán nhiều hàm băm mạnh về mật mã trên CPU nguồn và CPU đích. Tôi hy vọng tùy chọn này sẽ hoạt động tốt hơn so với --checksum
khi mạng của bạn nhanh và / hoặc CPU của bạn tương đối chậm.
Tôi nghĩ rằng tôi sẽ chỉ sử dụng --checksum
hoặc --ignore-times
nếu tôi đang chuyển các tệp đến một nơi mà người ta nghi ngờ rằng nội dung của một số tệp bị hỏng, nhưng thời gian sửa đổi của chúng không bị thay đổi. Tôi thực sự không thể nghĩ ra bất kỳ lý do chính đáng nào khác để sử dụng một trong hai tùy chọn, mặc dù có thể có các trường hợp sử dụng khác.
--checksum
hữu ích cùng với--itemize-changes
việc xác minh các bản sao lưu. Thỉnh thoảng các tập lệnh sao lưu của tôi chạy một so sánh đầy đủ theo cách này sau khi cập nhật hàng ngày / hàng tuần hiện tại hoàn tất. Tôi bị đánh rơi một email được đánh dấu khẩn cấp nếu--itemize-changes
xuất ra bất cứ điều gì bất ngờ, vì vậy tôi biết có một vấn đề tiềm ẩn mà tôi nên xem xét.