Como posso verificar a validade de um arquivo gz, não tenho o hash do arquivo, estou usando gzip -t
mas não está retornando nenhuma saída.
Responder1
O gzip -t
comando retorna apenas um código de saída para o shell informando se o arquivo passou no teste de integridade ou não.
Exemplo (em um script):
if gzip -t file.gz; then
echo 'file is ok'
else
echo 'file is corrupt'
fi
Adicionar -v
fará com que ele realmente relate o resultado com uma mensagem.
Exemplo:
$ gzip -v -t file.gz
file.gz: OK
Então o arquivo está ok. Vamos corromper o arquivo (escrevendo o caractere 0
no byte 40 do arquivo) e tentar novamente.
$ dd seek=40 bs=1 count=1 of=file.gz <<<"0"
1+0 records in
1+0 records out
1 bytes transferred in 0.000 secs (2028 bytes/sec)
$ gzip -v -t file.gz
file.gz: gzip: file.gz: Inappropriate file type or format
A integridade de um arquivo em relação à sua compactação nãonãogarantir que o arquivoconteúdoé o que você acredita que é. Se você tiver uma soma de verificação MD5 (ou alguma soma de verificação semelhante) do arquivo de quem o forneceu, você poderá obter uma confirmação adicional de que o arquivo não é apenas um gzip
arquivo válido, mas também que seu conteúdo é o que você espera. ser.
Responder2
gzip -t
nãoterqualquer saída, exceto o código de retorno, se for um arquivo compactado gzip correto.
Ele só retorna um erro se você estiver tentando algo quenão éum arquivo compactado gzip:
steamsrv@leviathan:~$ gzip -t commands.txt
gzip: commands.txt: not in gzip format
Conclusão: seu arquivo é quase certamente um arquivo compactado gzip. O que não posso dizer é se é o arquivo exato que você acha que deveria ser, e é para isso que o hash seria útil ...