L'utilitaire de ligne de commande zip
crée jamais un répertoire __MACOSX
, de sorte que vous pouvez simplement exécuter une commande comme ceci:
zip directory.zip -x \*.DS_Store -r directory
Dans la sortie ci-dessous, a.zip
que je créé avec l'utilitaire de ligne de commande zip
ne contient pas un répertoire __MACOSX
, mais a 2.zip
que j'ai créé à partir de 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
n'exclut pas .DS_Store
fichiers dans des répertoires mais -x \*.DS_Store
fait.
Le fichier de niveau supérieur d'une archive zip avec plusieurs fichiers doivent généralement être un seul répertoire, parce que si ce n'est pas, certains désarchivage utilites (comme unzip
et 7z
, mais pas l'utilitaire Archive, The Unarchiver, unar
ou dtrx
) ne créez pas de répertoire contenant pour les fichiers lorsque l'archive est extraite, ce qui rend souvent les fichiers difficiles à trouver, et si plusieurs archives de ce type sont extraites en même temps, il peut être difficile de dire quels fichiers appartiennent à quelle archive. Archive Utility crée uniquement un répertoire __MACOSX
lorsque vous créez une archive dans laquelle au moins un fichier contient des métadonnées telles que des attributs étendus, des indicateurs de fichier ou une branche de ressources. Le répertoire __MACOSX
contient des fichiers AppleDouble dont le nom de fichier commence par ._
et qui sont utilisés pour stocker les métadonnées spécifiques à OS X. L'utilitaire de ligne de commande zip
rejette les métadonnées telles que les attributs étendus, les indicateurs de fichiers et les ressources, ce qui signifie que les métadonnées telles que les balises sont perdues et que les alias cessent de fonctionner.
Normalement, vous pouvez simplement ignorer les métadonnées spécifiques à OS X, mais pour voir ce que contiennent les fichiers de métadonnées, vous pouvez utiliser xattr -l
. xattr
inclut également des forks de ressources et des indicateurs de fichiers, car même s'ils ne sont pas réellement stockés en tant qu'attributs étendus, ils peuvent être accessibles via l'interface d'attributs étendus. L'utilitaire d'archivage et l'utilitaire de ligne de commande zip
suppriment les ACL.
L'existence du dossier _MACOSX ne crée pas de problème. Il suffit de le supprimer. –
Cette question semble être hors-sujet car il devrait être dans AskDifferent – Nakilon
Il crée un problème avec les services web difficiles qui nécessitent une archive zip vierge, donc je suis reconnaissant pour les explications – mccc