Tôi không chắc chắn nếu rsync thực sự phù hợp với Amazon.
Theo tôi hiểu, thuật toán rsync tiêu chuẩn có nghĩa là máy khách tính băm cho từng khối của tệp và máy chủ sẽ tính băm cho bản sao của nó và gửi các giá trị băm đó đến máy khách, điều đó có nghĩa là máy khách có thể xác định khối nào đã thay đổi và cần tải lên.
Điều đó gây ra hai vấn đề cho Amazon khi rất nhiều băm phải được gửi qua internet và cũng cần có sức mạnh xử lý để tính toán tất cả các giá trị băm đó làm tăng chi phí của Amazon - đó có thể là lý do tại sao họ để lại cho các nhà cung cấp bên thứ ba có thể tính thêm phí cho tính năng đó.
Đối với các bản sao, họ rõ ràng đang lưu trữ các giá trị băm ở đâu đó và một nơi nào đó có thể thay đổi tùy thuộc vào bản sao. Họ có thể lưu trữ băm dưới dạng một đối tượng riêng biệt cho mỗi tệp trên Amazon hoặc dưới dạng cơ sở dữ liệu được lưu trữ trên Amazon hoặc họ có thể lưu trữ chúng cục bộ và từ xa.
Có những lợi thế và không thuận lợi khi làm một trong hai cách. Nếu các giá trị băm được lưu trữ từ xa trong các tệp riêng lẻ, thì việc lấy liên tục chúng có thể tốn kém. Nếu các giá trị băm được lưu trữ trong cơ sở dữ liệu từ xa, thì cơ sở dữ liệu này có thể trở nên lớn và có thể tốn kém khi liên tục truy xuất và cập nhật chúng. Nếu băm được lưu trữ cục bộ, thì điều này giúp giảm chi phí, nhưng giới thiệu các biến chứng và vấn đề khác.
(Tất nhiên Amazon có các dịch vụ khác, vì vậy có thể giữ cơ sở dữ liệu trong Amazon DB)
Lấy ví dụ, tôi đã thử một bản sao rsync sớm từ nhiều năm trước. Điều này không được viết để tính đến cấu trúc giá của Amazon và đã phát hành rất nhiều http để lấy lại hàm băm của mỗi khối và vì Amazon tính phí cho mỗi lần nhận, điều đó có nghĩa là trong khi phần lưu trữ trong hóa đơn của tôi giảm mạnh, phần chuyển nhượng khinh khí cầu.
Tôi mất gì khi sử dụng trùng lặp + s3 thay vì rsync + s3rsync + s3?
Bạn mất thực tế rằng với rsync bạn biết bạn đang so sánh các tệp nguồn với các tệp sao lưu của mình. Với sự trùng lặp và các bản sao khác, bạn đang so sánh các tệp nguồn của mình với hàm băm được thực hiện khi sao lưu được thực hiện. Ví dụ, có thể truy cập S3 trực tiếp và thay thế một trong các tệp của nó mà không cần tính toán lại hàm băm hoặc cập nhật cơ sở dữ liệu băm.