Há muito tempo, escrevi um script de backup para nosso site e o atualizei desde então. No entanto, ocasionalmente as coisas dão errado e alguns dos backups mais antigos agora estão quebrados.
Antigamente, eu usava o utilitário zipinfo
em nossos scripts automatizados para tentar descobrir se um backup anterior estava ruim e, em seguida, tentar novamente um backup, mas, embora ainda tenhamos alguns, zip
há (pelo menos) dois problemas.
Primeiro, zip
tem limitações fundamentais e por isso usamos tar
para backups maiores.
E, secundariamente, zip
não captura tantos metadados quanto tar
o faz e, portanto, preferimos isso para certos tipos de coisas.
Além disso, mudamos para gzip
em vez de zip
, e também estamos comprimindo nosso tars
...
Nossos backups agora são enormes e estou tentando descobrir o que remover e o que manter - não faz sentido manter arquivos quebrados. Então, estou escrevendo um script que mescla nossos vários diretórios de backup - de dentro e fora do local, etc - e sinto uma necessidade séria de verificar a validade de cada arquivo porque às vezes uma cópia é corrompida e a outra está OK.
Procurei uma gzip
versão de zipinfo
mas não encontrei. E eu nunca ouvi falar de tal coisa tar
, mas posso ser apenas ignorante!
Com certeza não quero ter que recorrer à expansão para o espaço em disco!
Em relação a
gzip
:(Isso se aplica a
gz
arquivostgz
etz
.)Observando que
zipinfo
é baseado emunzip
, investigueigzip
mais detalhadamente e descobri que, embora não haja um equivalente direto parazipinfo -t
, há uma combinação que funciona de maneira semelhante comgunzip
:Observe, no entanto, que a saída desejada é enviada para
stderr
e nãostdout
! Além disso, há uma guia entre os dois pontos de saída e OK, portanto, ajuste o script de acordo.Em relação a
tar
:Conforme observado nos comentários acima, descobri da mesma forma que, embora o tar não tenha as verificações que gostaríamos,
tar -t
é um começo razoável para uma solução "melhor do que nada".Assim como
gunzip
, a saída de confirmação vem destderr
, não destdout
, embora ambos os fluxos de saída possam ser/são úteis, dependendo de seus subobjetivos específicos.A rigor, a versão atual do tar do Fedora 38 reclama com:
...se o arquivo for inválido. Ou seja, só porque não há arquivos perceptíveis em um tar não significa que seja necessariamente inválido, simplesmente pode ter sido construído incorretamente em primeiro lugar. Então, alguns podem considerar esse arquivo inválido! YMMV.