Я создал два ZIP- файла одного каталога. Один с графическим интерфейсом, другой с:
$ zip -r alpha_cmd.zip Alpha
Альфа каталог 33.640 MB с 164 пунктов.
ZIP-файл, созданный с помощью графического интерфейса пользователя, на 2100 байт больше, чем ZIP-файл, созданный в командной строке.
Почему ZIP-файл создан с большим графическим интерфейсом?
Примечание . Несмотря на то, что файлы ZIP имеют разный размер, в разархивированном виде каждый каталог имеет одинаковое количество байтов. По сути, я очень осторожен в отношении возможных несоответствий, возникающих при управлении моей файловой системой с помощью графического интерфейса и команд оболочки.
ditto -ck --rsrc --sequesterRsrc --keepParent folder folder.zip
Ответы:
При архивации из Finder добавляется папка __MACOSX, невидимая на компьютерах Mac, которая содержит вилки ресурсов OS X, такие как пользовательские значки и тому подобное. Из Википедии :
источник
Даже если не учитывать основную причину в этом случае (Finder добавляет дополнительные скрытые элементы, как говорит empedocle), разные размеры для ZIP с одинаковыми данными не указывают на проблему, когда разница в размере составляет доли процента.
Разные реализации ZIP могут иметь разный уровень сжатия по умолчанию (компромисс между временем и размером процессора) или просто иметь другой код, который сохраняет больше или меньше совпадений, сохраняя больше или меньше байтов при уровне сжатия по умолчанию.
Например, 7-Zip обычно создает
.zip
файлы меньшего размера, чем другие программы ZIP. (И нет, я не говорю о собственном.7z
формате файла. У него также есть лучший компрессор с простым ZIP-архивом.)zipcmp - это программа cmdline, которая может сравнивать файлы ZIP. По умолчанию сравнивается только папка ZIP, чтобы убедиться, что все файлы имеют одинаковое имя, размер и CRC . Если это так, то оба ZIP-файла почти наверняка имеют одинаковое содержимое, но просто сжимаются по-разному (если размер сжатого файла различен). Конечно, если ZIP-файлы не повреждены. Используется
unzip -t foo.zip
для проверки файла ZIP на наличие ошибок распаковки, несовпадающих CRC и т. Д.источник
/usr/bin/zip
на другую версию будетln /usr/bin/zip /usr/bin/zip.standard; mv new_zip /usr/bin/zip
. Таким образом, у вас всегда есть/usr/bin/zip
, потому что вы атомарно замените реализацию системы. Кроме того, старая версия просто переименовывается, а не перемещается/tmp
(что может быть в другой файловой системе). Чтобы отключить ее, я просто переименую ееzip.disab
, посмотрю, не сломается ли Finder, а затем переименует ее обратно. Но функции библиотеки создания zip распространены. Искатель почти наверняка не форк / exec/usr/bin/zip
.