zip
Утилита командной строки никогда не создает __MACOSX
каталог, так что вы можете просто запустить команду:
zip directory.zip -x \*.DS_Store -r directory
В выводе ниже, a.zip
который я создал с помощью zip
утилиты командной строки, не содержится__MACOSX
каталог, но a 2.zip
который я создал из Finder.
$ touch a
$ xattr -w somekey somevalue a
$ zip a.zip a
adding: a (stored 0%)
$ unzip -l a.zip
Archive: a.zip
Length Date Time Name
-------- ---- ---- ----
0 01-02-16 20:29 a
-------- -------
0 1 file
$ unzip -l a\ 2.zip # I created `a 2.zip` from Finder before this
Archive: a 2.zip
Length Date Time Name
-------- ---- ---- ----
0 01-02-16 20:29 a
0 01-02-16 20:31 __MACOSX/
149 01-02-16 20:29 __MACOSX/._a
-------- -------
149 3 files
-x .DS_Store
не исключает .DS_Store
файлы внутри каталогов, но -x \*.DS_Store
делает.
Файл верхнего уровня zip-архива с несколькими файлами обычно должен быть одним каталогом, потому что если это не так, некоторые утилиты для разархивирования (например, unzip
7z
утилиты для и , но не утилита архивирования, Unarchiver unar
, илиdtrx
) не создают каталог, содержащий для файлы при извлечении архива, что часто затрудняет поиск файлов, и если несколько подобных архивов извлекаются одновременно, может быть трудно определить, какие файлы принадлежат какому архиву.
Утилита архивирования создает __MACOSX
каталог только при создании архива, в котором хотя бы один файл содержит метаданные, такие как расширенные атрибуты, флаги файлов или ветвь ресурса. __MACOSX
Каталог содержит AppleDouble файлов, имя файла начинается с ._
, которые используются для хранения OS X специфичных метаданных. В zip
утилите командной строка отбрасывает метаданные , такие как расширенные атрибуты, флаги файлов, вилок и ресурсов, что также означает , что метаданные , такие как метка теряется, и что псевдонимы перестать работать, потому что информация в файле псевдонимы хранится в ветви ресурсов.
Обычно вы можете просто отбросить специфичные для OS X метаданные, но чтобы увидеть, какие файлы метаданных содержат, вы можете использовать xattr -l
. xattr
также включает в себя ветки ресурсов и файловые флаги, потому что даже если они на самом деле не хранятся как расширенные атрибуты, к ним можно получить доступ через интерфейс расширенных атрибутов. Утилита архивирования и утилита zip
командной строки отбрасывают списки ACL.