Precisa usar a opção, caso contrário, o padrão é uma rápida comparação de data e hora e tamanho
--checksum
Eu tenho um cenário simples em que preciso gerar versões para algum software baseado em java. O que eu tenho feito manualmente é:
1- Construa o software 2- Copie tudo o que é necessário para um "diretório de lançamento" 3- Comprimir o arquivo
Agora adicionei CI (Jenkins) para criar construções para mim. Então eu tentei rsync para atualizar um diretório de instalação base (que contém a última compilação). O problema com o RSYNC é usar timestamps. Como acabei de criar uma nova versão, todos os timestamps foram alterados. Há algo que eu possa fazer para comparar os arquivos no modo binário?
Isso é o que eu fiz. Por enquanto, src1 e src2 são os mesmos. A única diferença é o timestamp como src2 é uma cópia de src1. Em seguida, o rsync copia todos os arquivos para dst. Eu estava esperando que o dst estivesse vazio.
rsync -av --progress --stats --compare-dest=../src1/ src2/ dst/
Então eu tentei o seguinte. Gerei uma cópia de src1 com o mesmo timestamp e quando executo o mesmo comando, dst está vazio. O que me levou a acreditar que o rsync usa timestamps.
O rsync efetivamente compara os arquivos no modo binário, ele só transmite o conteúdo se for encontrada uma diferença no conteúdo binário.
Pelo que entendi, as verificações do tempo de modificação (e tamanho) são usadas para selecionar arquivos para comparação.
O rsync tem uma opção --size-only