Verifique a validade do arquivo gz

4

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.

Obrigado

    
por Noor 16.04.2017 / 15:02

2 respostas

8

O comando gzip -t só retorna um código de saída para o shell dizendo se o arquivo passou no teste de integridade ou não.

Exemplo:

$ gzip -t file.gz && echo ok || echo bad
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 -t file.gz && echo ok || echo bad
gzip: file.gz: Input/output error
bad

A integridade de um arquivo em relação à sua codificaçã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 do arquivo de quem forneceu, então você teria uma confirmação adicional de que o arquivo não é apenas um gzip archive válido, mas também é o arquivo que você quer que seja.

    
por 16.04.2017 / 15:22
4

gzip -t não tem nenhuma saída, diferente do código de retorno, se for um arquivo compactado gzip correto.

Ele só retorna um erro se você estiver tentando em algo que nã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 com gzip. O que eu não posso te dizer é se é o arquivo exato que você acha que deveria ser, que é o que o hash seria útil para ...

    
por 16.04.2017 / 15:12

Tags