Контрольная сумма Md5 отличается после gunzip и gzip

Я случайно удалил несколько сжатых файлов из папки. К счастью, я распаковал их в другом месте и сейчас занимаюсь их восстановлением. У меня были контрольные суммы md5 для старых (теперь удаленных) файлов, но контрольные суммы для вновь сжатых файлов не совпадают. Дерьмо.

Но... У меня есть другая папка, которая содержит аналогичные сжатые файлы из того же источника, и я, когда я gunzip а потом сразу gzip один из этих файлов, контрольная сумма снова отличается, что заставляет меня подозревать, что создатель файлов использовал разные параметры для gzip (если есть альтернативное объяснение, я бы хотел услышать это).

Есть ли способ идентифицировать используемые параметры gzip, чтобы я мог убедиться, что мои манипуляции не испортили содержимое файлов?

2 ответа

Решение

Стандартный Unix file Утилита дает вам базовую информацию о файле.gz, например:

$ file foo.gz
foo.gz: gzip compressed data, was "foo", from Unix, last modified: Tue Aug  1 14:19:21 2017, max compression

Как видите, в заголовке хранится исходное имя файла, ОС, в которой было выполнено сжатие, время модификации и уровень сжатия. Обратите внимание, что оригинальное имя файла может отличаться, если вы сделали что-то вроде gzip -c tempfile > foo.gz, в этом случае оригинальное имя файла будет tempfile, Или он может даже не существовать, если gzip не получил оригинальное имя файла, потому что он читал из потока (например, tar czf foo.tar.gz somedir).

Таким образом, вы, вероятно, хотите получить представление о том, какие факторы могут отличаться в первую очередь. Я не знаю, насколько все это действительно важно для вас, но вы можете взглянуть на RFC 1952, который дает формат файла. Вы можете попробовать другие настройки и даже отредактировать в шестнадцатеричном виде некоторые поля, чтобы они соответствовали полям инициатора (например, для другой ОС).

Все эти утилиты включают некоторую метаинформацию, которая может меняться при каждом запуске, поэтому даже с одинаковыми файлами вы получаете несколько разные ZIP-файлы (и, следовательно, разные MD5). Для сравнения содержимого вы должны распаковать их.

Если вы посмотрите GZIP в Википедии, вы узнаете, что файл GZip начинается с 10-байтового заголовка, содержащего магическое число (1f 8b), номер версии и метку времени. Другими словами, каждый прогон гарантированно дает другой файл.

Другие вопросы по тегам