Я использую команду "diff", чтобы сравнить два сжатых файла, сгенерированных с помощью zip, на одном и том же начальном файле, и они сообщаются как разные. Однако, когда я распаковываю их и использую команду diff, никаких различий не отображается. Я заметил это с zip и gzip.
4 ответа
Одно из полей в заголовке gzip отличается между двумя файлами. Одним из таких полей является время последнего изменения сжатого файла (в секундах с 1970 года), или если сжатые данные не были прочитаны из файла, то время, когда файл был сжат.
Даже одной секунды достаточно, чтобы файлы gzip не совпадали.
Вы можете использовать опцию gzip --no-name
(или -n
), чтобы запретить gzip добавлять исходное имя файла и метку времени в заголовок gzip. Это должно предотвратить несоответствия, когда данные одинаковы, при условии, что используется один и тот же уровень сжатия. Один из способов добавить эту опцию в команды gzip - установить переменную среды GZIP
, чтобы эта опция использовалась каждой командой gzip. Например, в Bourne-совместимой оболочке, такой как bash,
export GZIP="--no-name -6"
или же
export GZIP=--no-name
Две возможные причины:
- другой алгоритм сжатия, используемый той же самой программой сжатия, или
- различные программы сжатия
Вы также можете использовать zdiff, если хотите сравнить сжатое содержимое.