Não tenho certeza se o verdadeiro rsync é um bom ajuste para a Amazon.
Pelo que entendi, o algoritmo rsync padrão significa que o cliente calcula hashes para cada bloco de um arquivo e o servidor calcula hashes para sua cópia e envia esses hashes ao cliente, o que significa que o cliente pode determinar quais blocos foram alterados e precisam ser carregados.
Isso causa dois problemas para a Amazon: muitos hashes precisam ser enviados pela Internet e também é preciso poder de processamento para calcular todos os hashes que aumentariam os custos da Amazon - e é provavelmente por isso que eles deixam para fornecedores terceirizados que podem cobrar extra por esse recurso.
Quanto aos clones, eles obviamente estão armazenando os hashes em algum lugar e esse lugar pode variar dependendo do clone. Seria possível para eles armazenar os hashes como um objeto separado por arquivo na Amazon ou como um banco de dados armazenado na Amazon, ou eles podem armazená-los local e remotamente.
Existem vantagens e desvantagens de fazê-lo de qualquer maneira. Se os hashes forem armazenados remotamente em arquivos individuais, pode ser caro recuperá-los continuamente. Se os hashes forem armazenados em um banco de dados remotamente, esse banco de dados poderá se tornar grande e pode ser caro recuperar e atualizá-los continuamente. Se os hashes são armazenados localmente, isso ajuda a reduzir custos, mas introduz outras complicações e problemas.
(É claro que a Amazon possui outros serviços, portanto, seria possível manter um banco de dados no Amazon DB)
Como exemplo, experimentei um clone do rsync mais antigo, há muitos anos. Isso não foi escrito para levar em conta a estrutura de preços da Amazon e estava emitindo muitos http para recuperar o hash de cada bloco e, uma vez que a Amazon cobra por cada get, isso significava que, enquanto a parte do armazenamento da minha conta caía acentuadamente, a parte da transferência balão.
O que eu perco usando duplicidade + s3 em vez de rsync + s3rsync + s3?
Você perde o fato de que, com o rsync, você sabe que está comparando arquivos de origem com seus arquivos de backup. Com duplicidade e outros clones, você está comparando seus arquivos de origem com um hash que foi obtido quando o backup foi realizado. Por exemplo, pode ser possível acessar o S3 diretamente e substituir um de seus arquivos sem recalcular o hash ou atualizar o banco de dados de hash.