L' zip
utilità della riga di comando non crea mai una __MACOSX
directory, quindi puoi semplicemente eseguire un comando come questo:
zip directory.zip -x \*.DS_Store -r directory
Nell'output seguente, a.zip
che ho creato con l' zip
utilità della riga di comando non contiene una __MACOSX
directory, ma a 2.zip
che ho creato dal 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
non esclude i .DS_Store
file all'interno delle directory ma lo -x \*.DS_Store
fa.
Il file di livello superiore di un archivio zip con più file dovrebbe in genere essere una singola directory, perché in caso contrario, alcuni programmi di utilità di archiviazione (come unzip
e 7z
, ma non l'utilità di archiviazione, The Unarchiver unar
o dtrx
) non creano una directory di contenimento per il file quando viene estratto l'archivio, il che rende spesso difficili da trovare i file, e se più archivi come quello vengono estratti contemporaneamente, può essere difficile dire quali file appartengono a quale archivio.
L'utilità di archiviazione crea una __MACOSX
directory solo quando si crea un archivio in cui almeno un file contiene metadati come attributi estesi, flag di file o fork di risorse. La __MACOSX
directory contiene file AppleDouble il cui nome inizia con ._
quello utilizzato per memorizzare metadati specifici di OS X. L' zip
utilità della riga di comando ignora metadati come attributi estesi, flag di file e fork di risorse, il che significa anche che i metadati come i tag vengono persi e che gli alias smettono di funzionare, poiché le informazioni in un file alias vengono archiviate in un fork di risorse.
Normalmente puoi semplicemente scartare i metadati specifici di OS X, ma per vedere cosa contengono i file di metadati, puoi usarli xattr -l
. xattr
include anche fork di risorse e flag di file, perché anche se non sono effettivamente archiviati come attributi estesi, è possibile accedervi tramite l'interfaccia degli attributi estesi. Sia l'utilità di archiviazione che l'utilità della zip
riga di comando eliminano gli ACL.