O zip
utilitário de linha de comando nunca cria um __MACOSX
diretório; portanto, você pode simplesmente executar um comando como este:
zip directory.zip -x \*.DS_Store -r directory
Na saída abaixo, a.zip
que eu criei com o zip
utilitário de linha de comando não contém um __MACOSX
diretório, mas a 2.zip
que eu criei no 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ão exclui .DS_Store
arquivos dentro de diretórios, mas -x \*.DS_Store
sim.
O arquivo de nível superior de um archive zip com vários arquivos geralmente deve ser um diretório único, porque, caso contrário, alguns utilitários de desarquivamento (como unzip
e 7z
, mas não o Archive Utility, The Unarchiver unar
oudtrx
) não criam um diretório que contenha o arquivos quando o arquivo é extraído, o que geralmente dificulta a localização dos arquivos e, se vários arquivos como esse são extraídos ao mesmo tempo, pode ser difícil dizer quais arquivos pertencem a qual arquivo.
O Utilitário de arquivamento cria apenas um __MACOSX
diretório quando você cria um arquivamento em que pelo menos um arquivo contém metadados, como atributos estendidos, sinalizadores de arquivo ou uma bifurcação de recursos. O __MACOSX
diretório contém arquivos AppleDouble cujo nome de arquivo é iniciado e ._
são usados para armazenar metadados específicos do OS X. O zip
utilitário de linha de comando descarta metadados, como atributos estendidos, sinalizadores de arquivo e bifurcações de recursos, o que também significa que os metadados, como tags, são perdidos e que os alias param de funcionar, porque as informações em um arquivo de alias são armazenadas em uma bifurcação de recursos.
Normalmente, você pode simplesmente descartar os metadados específicos do OS X, mas para ver o que os arquivos de metadados contêm, você pode usá-lo xattr -l
. xattr
também inclui bifurcações de recursos e sinalizadores de arquivo, porque, embora não sejam realmente armazenados como atributos estendidos, eles podem ser acessados através da interface de atributos estendidos. O Archive Utility e o zip
utilitário de linha de comando descartam ACLs.