La zip
utilidad de línea de comandos nunca crea un __MACOSX
directorio, por lo que puede ejecutar un comando como este:
zip directory.zip -x \*.DS_Store -r directory
En el resultado a continuación, a.zip
lo que creé con la zip
utilidad de línea de comandos no contiene un __MACOSX
directorio, pero sí a 2.zip
lo creé desde 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
no excluye .DS_Store
archivos dentro de directorios pero lo -x \*.DS_Store
hace.
El archivo de nivel superior de un archivo zip con varios archivos generalmente debería ser un solo directorio, porque si no lo es, algunas utilidades de desarchivado (como unzip
y 7z
, pero no la Utilidad de archivo, The Unarchiver unar
, o dtrx
) no crean un directorio contenedor para archivos cuando se extrae el archivo, lo que a menudo hace que los archivos sean difíciles de encontrar, y si se extraen varios archivos como ese al mismo tiempo, puede ser difícil saber qué archivos pertenecen a qué archivo.
Archive Utility solo crea un __MACOSX
directorio cuando crea un archivo en el que al menos un archivo contiene metadatos como atributos extendidos, marcas de archivo o una bifurcación de recursos. El __MACOSX
directorio contiene archivos AppleDouble cuyo nombre de archivo comienza con los ._
que se utilizan para almacenar metadatos específicos de OS X. La zip
utilidad de línea de comandos descarta metadatos como atributos extendidos, marcas de archivo y bifurcaciones de recursos, lo que también significa que se pierden metadatos como etiquetas y que los alias dejan de funcionar, porque la información en un archivo de alias se almacena en una bifurcación de recursos.
Normalmente, puede descartar los metadatos específicos de OS X, pero puede ver qué archivos de metadatos contienen xattr -l
. xattr
también incluye bifurcaciones de recursos y marcas de archivo, porque aunque en realidad no se almacenan como atributos extendidos, se puede acceder a ellos a través de la interfaz de atributos extendidos. Tanto Archive Utility como la zip
línea de comandos descartan ACL.