L' zip
utilitaire de ligne de commande ne crée jamais de __MACOSX
répertoire, vous pouvez donc simplement exécuter une commande comme celle-ci:
zip directory.zip -x \*.DS_Store -r directory
Dans la sortie ci-dessous, a.zip
que j'ai créée avec l' zip
utilitaire de ligne de commande ne contient pas de __MACOSX
répertoire, mais a 2.zip
que j'ai créé à partir du 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 les .DS_Store
fichiers à l'intérieur des répertoires mais le -x \*.DS_Store
fait.
Le fichier de niveau supérieur d'une archive zip avec plusieurs fichiers doit généralement être un répertoire unique, car si ce n'est pas le cas, certains utilitaires de désarchivage (comme unzip
et 7z
, mais pas Archive Utility, The Unarchiver unar
, ou dtrx
) ne créent pas de répertoire contenant pour le fichiers lorsque l'archive est extraite, ce qui rend souvent les fichiers difficiles à trouver, et si plusieurs archives comme celle-ci sont extraites en même temps, il peut être difficile de dire quels fichiers appartiennent à quelle archive.
L'utilitaire d'archivage crée uniquement un __MACOSX
répertoire 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 fourchette de ressources. Le __MACOSX
répertoire contient des fichiers AppleDouble dont le nom de fichier commence par ._
qui sont utilisés pour stocker les métadonnées spécifiques à OS X. L' zip
utilitaire de ligne de commande rejette les métadonnées telles que les attributs étendus, les indicateurs de fichier et les fourchettes de ressources, ce qui signifie également que les métadonnées telles que les balises sont perdues et que les alias cessent de fonctionner, car les informations d'un fichier d'alias sont stockées dans une fourchette de ressources.
Normalement, vous pouvez simplement supprimer les métadonnées spécifiques à OS X, mais pour voir ce que les fichiers de métadonnées contiennent, vous pouvez utiliser xattr -l
. xattr
inclut également les fourchettes de ressources et les indicateurs de fichier, car même s'ils ne sont pas réellement stockés en tant qu'attributs étendus, ils sont accessibles via l'interface d'attributs étendus. L'utilitaire d'archivage et l' zip
utilitaire de ligne de commande suppriment les ACL.