Проверьте правильность файла gz

13

Как я могу проверить правильность файла gz, у меня нет хэша файла, который я использую, gzip -tно он не возвращает никакого вывода.

Спасибо

Noor
источник

Ответы:

22

Команда gzip -tвозвращает в оболочку только код завершения, сообщающий, прошел ли файл тест на целостность или нет.

Пример (в скрипте):

if gzip -t file.gz; then
    echo 'file is ok'
else 
    echo 'file is corrupt'
fi

Добавление -vзаставит его на самом деле сообщить результат с сообщением.

Пример:

$ gzip -v -t file.gz
file.gz:        OK

Так что файл в порядке. Давайте испортим файл (записав символ 0в байте 40 в файле) и попробуем снова.

$ 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

Целостность файла относительно его сжатия не гарантирует, что содержимое файла является тем, чем вы считаете. Если у вас есть контрольная сумма MD5 (или некоторая аналогичная контрольная сумма) файла от того, кто его предоставил, вы сможете получить дополнительное подтверждение того, что файл не только является действительным gzipархивом, но и что его содержимое соответствует ожидаемому вами. быть.

Кусалананда
источник
4

gzip -tне имеет никакого вывода, кроме кода возврата, если это правильный сжатый GZIP-файл.

Он возвращает ошибку, только если вы пытаетесь сделать это с файлом, не сжатым GZIP:

steamsrv@leviathan:~$ gzip -t commands.txt

gzip: commands.txt: not in gzip format

Вывод: Ваш файл почти наверняка является сжатым GZIP-файлом. То, что я не могу сказать вам, является ли это точным файлом, который, как вы думаете, должен быть, и для этого полезен хеш ...

Shadur
источник