Como posso verificar a validade de um arquivo gz, não tenho o hash do arquivo, estou usando, gzip -t
mas ele não está retornando nenhuma saída.
obrigado
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
A adição -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 no arquivo) e tente 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ão garante que o conteúdo do arquivo seja o que você acredita ser. Se você tiver uma soma de verificação MD5 (ou alguma soma de verificação semelhante) do arquivo de quem o forneceu, poderá obter uma confirmação adicional de que o arquivo não é apenas um gzip
archive válido , mas também que seu conteúdo é o que você espera. ser estar.
gzip -t
não possui nenhuma saída, exceto o código de retorno, se for um arquivo compactado gzip correto.
Ele retorna apenas um erro se você estiver tentando algo que não seja um arquivo compactado com gzip:
steamsrv@leviathan:~$ gzip -t commands.txt
gzip: commands.txt: not in gzip format
Conclusão: Seu arquivo é quase certamente um arquivo compactado com 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 ...