Como o rsync manipula a corrupção de arquivos?

1

Como procedimento de backup, gostaria de sincronizar periodicamente arquivos (por exemplo, via rsync ) de uma máquina Windows para um HD externo.

No entanto, eu queria saber sobre corrupção de arquivos. Se um arquivo for corrompido no host, sua soma de verificação muda, o rsync o verá modificado e copiará o arquivo corrompido do host, sobrescrevendo a boa cópia no disco rígido.

O rsync possui algum tipo de mecanismo que impeça que isso ocorra? Se não, como isso pode ser evitado?

EDIT: Para esclarecer, preciso informar se a soma de verificação mudou porque adicionei novo conteúdo ao arquivo ou porque o arquivo foi corrompido. Em ambos os casos, o rsync vai ver o arquivo como "modificado" e irá escrevê-lo sobre a versão antiga no HD. No primeiro caso, o rsync está fazendo o que eu queria, no segundo ele está apagando meu antigo arquivo válido com lixo.

    
por dr01 10.03.2017 / 16:37

2 respostas

2

A maneira como você geralmente lida com esse problema é a maneira como lida com qualquer outra situação na qual deseja reverter para uma versão anterior de um arquivo: Backups incrementais.

A idéia aqui é que você só copia o arquivo quando o conteúdo é alterado. Para qualquer outra cópia do arquivo na mídia de backup, basta consultar uma revisão anterior. Isso permite que você volte a uma revisão anterior do arquivo se o atual acaba por ser corrompido, a idéia é claro que, se você não notar a corrupção no tempo, o arquivo provavelmente não era muito importante para começar com.

O rsync suporta isso (pelo menos no * nix) com o parâmetro de linha de comando --link-dest .

Para que isso funcione bem, você também precisa de algo para limpar cópias antigas, o que o rsync não faz; você precisaria de algo mais para isso. Caso contrário, seu disco acabará sendo preenchido e você terá que excluir arquivos da mídia de destino manualmente.

E para responder à pergunta direta: o rsync não tem manipulação real de arquivos corrompidos. Ele provavelmente manipulará arquivos que não podem ser lidos, a menos que você os execute no modo de substituição local, mas não olhará para aquela imagem JPEG ou documento PDF e determinará que ela está malformada, fazendo com que ela pareça estranha quando renderizada . Isso não é apenas o seu trabalho.

Compare esta observação em uma resposta para Por que o RAID não é um backup? no Server Fault, por Jared Oberhaus :

Will a backup refuse to copy a corrupt file?

     

Mesmo que um backup copie dados corrompidos ou incorretos, o ponto de um backup é que você pode e deve ter várias cópias. Por exemplo, última hora, ontem, semana passada, etc. Você pode obter um efeito semelhante usando instantâneos giratórios em seu dispositivo de armazenamento.

e relacionados, nas palavras de Jörg W Mittag em outra resposta para a mesma pergunta, destacando a diferença entre redundância e backups:

If you accidentally overwrite your PhD thesis with garbage, redundancy ensures that you have multiple copies of garbage, in case one gets bad. A backup ensures that you can restore your PhD thesis.

    
por 10.03.2017 / 16:57
-1

Se quiser verificar o conteúdo do arquivo, você pode usar a opção "--checksum". Esta opção calcula um hash para cada arquivo transferido.

    
por 10.03.2017 / 17:33

Tags