Como posso verificar se um backup feito pelo rsync foi bem-sucedido?

3

Eu uso rsync -a para fazer um backup completo em um sistema de arquivos. Sua saída para stderr está vazia. Devo fazer alguma verificação adicional para verificar se o backup foi bem sucedido?

Por exemplo, como posso fazer uma soma de verificação para verificar isso?

Quando eu fizer um backup incremental usando rsync da próxima vez, a maneira de verificar pela soma de verificação será a mesma? O backup incremental terá hard links para os arquivos inalterados no backup completo e fará com que as somas de verificação da origem e do backup incremental sejam diferentes, embora o backup incremental seja bem-sucedido?

Meu sistema operacional é o Ubuntu 12.04. Obrigado.

    
por Tim 07.03.2015 / 23:45

1 resposta

10

Se você marcar o código de saída do rsync e ele retornar 0 (sucesso), nenhum erro deverá ter ocorrido. Em um script de shell, imediatamente após a execução do rsync, seria em $? para bourne-likes e $status para [t] csh. Nenhuma saída no stderr é similarmente um bom sinal, mas confio nele menos que o código de saída.

Dependendo da falha, os backups usando --link-dest podem não ter criado hardlinks, mas fazer verificações de soma de verificação detectariam isso. Se um hardlink for criado durante o rsync, ele já determinou que os arquivos são idênticos e não transferiram os dados do arquivo. Não há como um arquivo com link físico ter checksum diferentemente em um backup incremental versus backup completo.

Se um backup completo falhar, todos os incrementais baseados nesse backup completo serão suspeitos. De modo geral, o rsync é inteligente o bastante para descobrir as diferenças, independentemente da conclusão do backup completo, e, nesse caso, seus incrementais subseqüentes serão significativamente maiores que o normal. Eu ainda estaria muito preocupado com qualquer falha no processo de backup.

Uma palavra de cautela, -c (checksum) forçará uma releitura completa de cada arquivo selecionado nos sistemas de origem e de destino, independentemente do datestamp ou do tamanho do arquivo, e aumentará bastante o tempo e o sistema io necessários ambas as extremidades.

edit: Para responder sua pergunta subseqüente, time passará o código de retorno de seu programa filho para seu pai, a menos que haja um erro executando time , por exemplo, o usuário SIGTERM ' d time .

DIAGNOSTICS
       The time command returns when the program exits, stops, or is terminated by a
       signal. If the program exited normally, the return value of time is the
       return value of the program it executed and measured. Otherwise, the return
       value is 128 plus the number of the signal which caused the program to stop
       or terminate.
    
por 08.03.2015 / 00:13

Tags