Da página de manual do rsync:
Ele é famoso por seu algoritmo de transferência delta, que reduz a quantidade de dados enviados pela rede enviando apenas as diferenças entre os arquivos de origem e os arquivos existentes no destino...
O Rsync encontra arquivos que precisam ser transferidos usando um algoritmo lqquick checkrq (por padrão) que procura por arquivos que mudaram de tamanho ou no último horário modificado. Quaisquer alterações nos outros atributos preservados (conforme solicitado pelas opções) são feitas diretamente no arquivo de destino quando a verificação rápida indica que os dados do arquivo não precisam ser atualizados.
A transferência delta "diferenças entre os arquivos de origem e os arquivos existentes no destino" significa:
- source/file e dest/file são arquivos idênticos, conforme calculado pelo timestamp ou checksum, portanto não são transferidos
- junto com 1, source/file e dest/file são próximos em diff binário, então apenas a diferença entre os arquivos é enviada
Por que o rsync não usa delta-transfer para arquivos locais? diz que o rsync não usa delta-transfer para arquivos locais (no meu caso, entre /home e /media). Mas se eu deixar --no-W desativado ou usar -W, ele ainda não transferirá arquivos idênticos?
A transferência delta é uma otimização que pode acelerar cópias repetidas de arquivos alterados em uma rede .
Ele funciona lendo o arquivo de origem com um processo e lendo o arquivo de destino com outro processo e, então, comparando-os de tal forma que o remetente só precisa transmitir blocos de dados que ainda não estão presentes no destino.
Se você considerar copiar entre duas partes de um sistema de arquivos local, você precisaria ler ambos os arquivos na íntegra para descobrir o que escrever no destino. Na situação geral, uma leitura completa seguida por uma escrita parcial seria substituída de forma mais eficiente por uma escrita completa. (Isso não leva em conta a mídia de armazenamento onde a leitura é significativamente mais rápida do que a escrita, mas o algoritmo assume uma situação geral.)
Há outra otimização que não tem nada a ver com a transferência delta, por meio da qual
rsync
se assume que um arquivo com o mesmo nome relativo, tamanho e carimbo de data/hora de modificação na origem e no destino é provavelmente o mesmo arquivo, e evita processá-lo. Praticamente a única vez que isso quebra é se você tiver um aplicativo que redefine o tempo de modificação de um arquivo - e muito, muito poucos aplicativos fazem isso.Quase sempre, não dizer
rsync
como copiar um arquivo leva à maneira mais eficiente de copiá-lo. Apenas lembre-se de incluir o sinalizador--times
(-t
).