Verifique a validade do arquivo gz

13

Como posso verificar a validade de um arquivo gz, não tenho o hash do arquivo, estou usando, gzip -tmas ele não está retornando nenhuma saída.

obrigado

Noor
fonte

Respostas:

22

O gzip -tcomando 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 -vfará 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 0no 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 gziparchive válido , mas também que seu conteúdo é o que você espera. ser estar.

Kusalananda
fonte
4

gzip -tnã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 ...

Shadur
fonte