Как проверить действительность файла gz, у меня нет хеша файла, я его использую, gzip -t
но он не возвращает никаких выходных данных.
решение1
Команда 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
архивом, но и что его содержимое соответствует вашим ожиданиям.
решение2
gzip -t
не делаетиметьлюбой вывод, кроме кода возврата, если это правильный сжатый gzip файл.
Он возвращает ошибку только в том случае, если вы пытаетесь применить его к чему-то, чтоне являетсясжатый gzip-файл:
steamsrv@leviathan:~$ gzip -t commands.txt
gzip: commands.txt: not in gzip format
Вывод: Ваш файл почти наверняка является сжатым файлом gzip. Чего я не могу сказать, так это то, является ли он тем самым файлом, которым, по вашему мнению, он должен быть, для чего и был бы полезен хэш...