Por que o rsync copia arquivos depois de copiar os arquivos manualmente?

3

Eu copiei muitos arquivos em muitas pastas (~ 54GB) de um local ext4 para outro com cp ~/1 ~/2 -d -r -v -i no bash. Eu queria então verificar se todos os arquivos foram copiados corretamente, então eu corri rsync --delete -vturOn ~/1 ~/2 , mas o rsync queria copiar todos os arquivos. Por que é isso?

PS: Eu pretendia usar cp com -a , mas usei -d em erro.

Editar: Uma resposta aqui me levou a usar o --itemize-changes flag que me mostra >f..t...... para todos os arquivos. A página man indica que t significa que os tempos de modificação são diferentes, os arquivos de tipo são um arquivo ( f ) e os atributos do item só estão sendo modificados ( . ). Isso está correto? Então tudo o que vai ser mudado são os tempos de modificação?

Edit: Eu executei o rsync (sem o -n ) e apesar dos tempos de modificação do t serem diferentes, ele continuou a copiar todos os arquivos novamente (o conteúdo real do arquivo), o que é inesperado porque o rsync deve fazer uma cópia diff de qualquer maneira, o que deve ser notado?

Edit: Parou a sincronização e reran sem o parâmetro -t . Agora as alterações detalhadas mostraram 'T' em vez de t . Parece que vou ter que copiar todos os arquivos via rsync pelo menos uma vez se eu quiser usar o rsync nesses arquivos no futuro.

Editar: eu apaguei os arquivos de destino e copiei tudo novamente com o rsync com os parâmetros -van .

    
por SabreWolfy 29.04.2012 / 19:33

1 resposta

3

Na documentação do rsync:

Rsync finds files that need to be transferred using a "quick check" algorithm (by default) that looks for files that have changed in size or in last-modified time.

Além disso, quando a origem e o destino são locais, rsync é executado com a opção --whole-file por padrão.

-W, --whole-file

With this option rsync’s delta-transfer algorithm is not used and the whole file is sent as-is instead. The transfer may be faster if this option is used when the bandwidth between the source and destination machines is higher than the bandwidth to disk (especially when the "disk" is actually a networked filesystem). This is the default when both the source and destination are specified as local paths, but only if no batch-writing option is in effect.

Não tenho certeza, mas parece que você pode querer a opção --checksum .

-c, --checksum              skip based on checksum, not mod-time & size

Observe que isso requer a leitura dos arquivos de origem e de destino do disco para calcular a soma de verificação.

Mais sobre isso:

link

link

    
por 29.05.2014 / 16:20

Tags