4

Я использую команду "diff", чтобы сравнить два сжатых файла, сгенерированных с помощью zip, на одном и том же начальном файле, и они сообщаются как разные. Однако, когда я распаковываю их и использую команду diff, никаких различий не отображается. Я заметил это с zip и gzip.

4 ответа4

13

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

Даже одной секунды достаточно, чтобы файлы gzip не совпадали.

2

Вы можете использовать опцию gzip --no-name (или -n), чтобы запретить gzip добавлять исходное имя файла и метку времени в заголовок gzip. Это должно предотвратить несоответствия, когда данные одинаковы, при условии, что используется один и тот же уровень сжатия. Один из способов добавить эту опцию в команды gzip - установить переменную среды GZIP , чтобы эта опция использовалась каждой командой gzip. Например, в Bourne-совместимой оболочке, такой как bash,

export GZIP="--no-name -6"

или же

export GZIP=--no-name
2

Две возможные причины:

  • другой алгоритм сжатия, используемый той же самой программой сжатия, или
  • различные программы сжатия
2

Вы также можете использовать zdiff, если хотите сравнить сжатое содержимое.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .