Normalmente, rsync
ignora os arquivos quando eles têm tamanhos e horários idênticos nos lados de origem e de destino. Essa é uma heurística que geralmente é uma boa ideia, pois evita a rsync
necessidade de examinar o conteúdo de arquivos que provavelmente são idênticos nos lados de origem e de destino.
--ignore-times
diz rsync
para desativar a heurística de horários e tamanhos de arquivo e, assim, transferir incondicionalmente TODOS os arquivos da origem para o destino. rsync
irá então ler todos os arquivos no lado da fonte, pois precisará usar seu algoritmo de transferência delta ou simplesmente enviar todos os arquivos por inteiro, dependendo se a --whole-file
opção foi especificada.
--checksum
também modifica a heurística de horários e tamanhos de arquivo, mas aqui ignora horários e examina apenas tamanhos. Os arquivos nos lados de origem e destino que diferem em tamanho são transferidos, pois são obviamente diferentes. Arquivos com o mesmo tamanho são rsync
somados de verificação (com o MD5 na versão 3.0.0+ ou com o MD4 nas versões anteriores), e os arquivos com somas diferentes também são transferidos.
Nos casos em que os lados de origem e destino são basicamente os mesmos, a --checksum
maioria dos arquivos é somada em ambos os lados. Isso pode levar muito tempo, mas o resultado é que o mínimo de dados mínimo será realmente transferido pela conexão, especialmente se o algoritmo de transferência delta for usado. Obviamente, isso é apenas uma vitória se você tiver redes muito lentas e / ou CPU muito rápida.
--ignore-times
por outro lado, enviará mais dados pela rede e fará com que todos os arquivos de origem sejam lidos, mas pelo menos não imporá o ônus adicional de computar muitos hashsums criptograficamente fortes nas CPUs de origem e de destino. Eu esperava que essa opção tivesse um desempenho melhor do que --checksum
quando suas redes são rápidas e / ou sua CPU relativamente lenta.
Eu acho que jamais usaria --checksum
ou estaria --ignore-times
transferindo arquivos para um destino em que suspeitava que o conteúdo de alguns arquivos estivesse corrompido, mas cujos tempos de modificação não foram alterados. Não consigo realmente pensar em outra boa razão para usar qualquer uma das opções, embora provavelmente existam outros casos de uso.
--checksum
útil junto com--itemize-changes
a verificação de backups. De vez em quando, meus scripts de backup executam uma comparação completa dessa maneira após a conclusão das atualizações diárias / semanais atuais. Recebi um e-mail com a mensagem urgente, se--itemize-changes
gerar algo inesperado, por isso sei que há um problema em potencial que devo investigar.