Digamos que eu tenha um diretório com 2 arquivos, ambos idênticos e bastante grandes (por exemplo, 2 GB cada). Quero sincronizar novamente esse diretório para um host remoto. Pelo que entendi (e posso estar errado), o rsync calcula somas de verificação de arquivos. Certamente, se ele vir 2 arquivos com a mesma soma de verificação, poderá simplesmente copiar o primeiro arquivo e, em seguida, fazer uma cópia local no host remoto para o segundo arquivo? Isso tornaria tudo mais rápido, não?
Da mesma forma, o rsync não faz hash de todos os arquivos remotos antes de copiar? Se ele visse um arquivo diferente com o mesmo hash do arquivo que foi transferido, ele poderia fazer uma cópia local no host remoto.
O rsync suporta esse tipo de coisa? Existe alguma maneira de ativá-lo? Existe uma ferramenta semelhante ao rsync que fará esse tipo de cópias locais 'baseadas em hash'?
Responder1
Da mesma forma, o rsync não faz hash de todos os arquivos remotos antes de copiar? Se ele visse um arquivo diferente com o mesmo hash do arquivo que foi transferido, ele poderia fazer uma cópia local no host remoto.
não masUníssonofaz.
Responder2
Não acredito que exista hoje algum produto pronto para fazer isso como um único pacote de software. Existem otimizadores de WAN que farão isso para você e você ainda executará o RSYNC.
O que você procura é um processo de desduplicação/reduplicação. Idealmente, você não gostaria de reduplicar, mas desduplicar localmente e depois fazer o RSYNC. Dessa forma, você estará apenas copiando links em vez de expandir os arquivos do outro lado.
Responder3
Se ambos os arquivos forem realmente idênticos, você terá que sincronizar novamente um dos arquivos e, em seguida, fazer uma cópia local separadamente no lado remoto, fora do processo rsync.
Se você tiver dois arquivos idênticos, o rsync tentará copiá-los - o nome do arquivo, e não a soma de verificação, é o identificador mais importante. (Acabei de testar isso no meu laptop!)
Seria interessante envolver o rsync para fazer algumas das coisas que você mencionou ...
Vale a pena ler:
Responder4
A opção --fuzzypoderfaça o que você procura:
Na página de manual:
-y, --fuzzy
Esta opção informa ao rsync que ele deve procurar um arquivo base para qualquer arquivo de destino que esteja faltando. O algoritmo atual procura no mesmo diretório do arquivo de destino um arquivo que tenha tamanho e hora de modificação idênticos ou um arquivo com nome semelhante. Se encontrado, o rsync usa o arquivo de base difusa para tentar acelerar a transferência.
Caso contrário, alguém com habilidades de programação relevantes poderá ajustar a opção para se comportar como você descreve com bastante facilidade - embora isso provavelmente não seja algo em que você gostaria de se envolver!