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
), не створюють каталог, що містить файли, коли архів витягується, що часто ускладнює пошук файлів, і якщо кілька подібних архівів одночасно витягуються, може бути важко сказати, які файли належать до якого архіву.
Archive Utility створює __MACOSX
каталог лише тоді, коли ви створюєте архів, де принаймні один файл містить метадані, такі як розширені атрибути, прапорці файлів або вилка ресурсу. __MACOSX
Каталог містить AppleDouble файлів, ім'я файлу починається з ._
, які використовуються для зберігання OS X специфічних метаданих. В zip
утиліті командного рядок відкидає метадані , такі як розширені атрибути, прапори файлів, вилок і ресурсів, що також означає , що метадані , такі як мітка втрачається, і що псевдоніми перестати працювати, тому що інформація у файлі псевдоніми зберігається в гілці ресурсів.
Зазвичай ви можете просто відкинути метадані, характерні для ОС X, але, щоб побачити, що містять файли метаданих, ви можете використовувати xattr -l
. xattr
також включає вилки ресурсів та прапори файлів, оскільки, хоча вони фактично не зберігаються як розширені атрибути, до них можна отримати доступ через розширений інтерфейс атрибутів. Як утиліта архіву, так і утиліта zip
командного рядка відкидають ACL.