Testar integridade do arquivo tar no bash

21

Eu tenho um script bash que cria um arquivo '.tar'. Uma vez que o arquivo é criado, eu gostaria de testar sua integridade e enviar um email para o usuário root se a integridade for ruim.

Eu sei que precisaria usar o comando tar -tf /root/archive.tar para verificar a integridade do arquivo, mas como eu implementaria isso em uma instrução bash if e verificaria erros?

    
por Chris 16.05.2014 / 01:19

2 respostas

27

Se tar encontrar erros em sua entrada, exit(3) ¹ terá um valor de saída diferente de zero. Isso - com a maioria das tar implementações - também é feito ao listar o conteúdo do arquivo com t . Assim, você pode simplesmente verificar o valor de saída de tar para determinar se algo deu errado:

if ! tar tf /root/archive.tar &> /dev/null; then
    write_an_email_to_root
fi

Se o tar não encontrar todos os erros com t , você ainda poderá extrair o arquivo para stdout e redirecionar stdout para /dev/null , o que seria a abordagem mais lenta, porém mais confiável:

if ! tar xOf /root/archive.tar &> /dev/null; then
    write_an_email_to_root
fi

¹ Essa notação denota a manpage, não a chamada real. Veja man 3 exit .

    
por 16.05.2014 / 01:28
-5

Você pode fazer isso passando os seguintes argumentos para tar :

$ tar -cvzf test.tar test_file
    
por 07.08.2014 / 07:36

Tags