Usando o rsync para garantir que dois diretórios tenham exatamente os mesmos arquivos [duplicados]

2

Eu quero clonar um diretório muito grande (muitos terabytes de arquivos de vários gigabytes) em outro em outra unidade. Eu tenho usado este comando:

ionice -c 3 rsync -avz /path/to/sourcedir/ /path/to/destdir/

O processo leva mais de um dia e, na maioria das vezes, é interrompido, portanto, o uso de rsync pode ser retomado sem reiniciar do zero. A teoria deveria ser que o comando acima é idempotente, então, quando qualquer coisa falhar, eu deveria ser capaz de reemitir o mesmo comando para que ele funcione onde foi interrompido e continue a partir daí.

Agora, como o objetivo da operação é retirar e reciclar a unidade de origem, antes de fazer isso, eu queria ter certeza de que todos os arquivos foram copiados corretamente. Então eu usei a abordagem em esta questão para comparar cada byte byte de arquivo. Com certeza, havia vários arquivos que tinham um hash diferente.

Portanto, a questão da teoria: o rsync , diferentemente do que eu pensava ter entendido, funcionava meramente em nomes de arquivos, em vez de conteúdo, ou pelo menos comprimento?

E a (mais importante) questão prática: há outras opções que eu poderia estar usando para forçar o rsync a produzir um clone exato do diretório fonte? Em particular, no caso em que rsync é iniciado quando o diretório dest já possui um arquivo com o mesmo nome de um no diretório de origem, mas com conteúdo diferente, quero que o comando assegure que seja substituído (ou "concluído" ") com o arquivo original real do diretório de origem.

    
por st01 07.05.2018 / 09:25

1 resposta

5

Sim, você pode fazer rsync procurar os arquivos para verificar se tudo corresponde. De man rsync

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

É claro que será lento, mas rsync deve encontrar diferenças que a verificação normal não encontraria.

Mas o rsyncing não é clonado. Se você quiser uma cópia clonada, use o Clonezilla .

    
por sudodus 07.05.2018 / 09:35