Как создать zip-архив для пользователей Windows и Linux?

В Finder, когда я создаю архив ("Сжать элементы..."), полученный zip-архив имеет файлы .DS_Store в папках, а файлы имеют ветки ресурсов. Как я могу создать zip-архив, подходящий для совместного использования на разных платформах из Mac OS X?

Ответы (2)

  • zip -r -x .DS_Store directory.zip directory
    • zipпо умолчанию удаляет расширенные атрибуты и ACL
  • find directory -name .DS_Store -delete; ditto -ck --norsrc directory directory.zip
    • --norsrcподразумевает --noextattrи --noacl; --noextattrпотребует--norsrc
    • -cсжимается, -kиспользует PKZip (zip) вместо CPIO
  • COPYFILE_DISABLE= tar --exclude .DS_Store -czf directory.tgz directory
    • Параметр COPYFILE_DISABLEсообщает tarоб удалении расширенных атрибутов и ACL вместо создания ._файлов .

Файлы, которые начинаются с, ._являются файлами AppleDouble (а не ответвлениями ресурсов), и они используются для хранения расширенных атрибутов и списков ACL.

Расширенные атрибуты используются для хранения статуса карантина файлов, исходных URL-адресов файлов, загруженных из Интернета, информации об псевдонимах (псевдонимы перестают работать, если расширенные атрибуты удалены), комментариев Spotlight, кодировки файлов, сохраненных с помощью TextEdit, и т. д. .

Вы можете перечислить расширенные атрибуты и ACL с помощью ls -l@e. Вы можете удалить расширенные атрибуты и ACL рекурсивно с помощьюxattr -cr .; chmod -NR .

Вы можете использовать dittoкоманду.

ditto -ck --norsrc sourcedir destination.zip

-c create an archive
-k create a PKZip archive instead of the default, which is CPIO
--norsrc do not preserve the resource forks

Я думаю, что это все равно будет включать файлы .DS_Store.