Das zip
Befehlszeilenprogramm erstellt niemals ein __MACOSX
Verzeichnis. Sie können also einfach einen Befehl wie den folgenden ausführen:
zip directory.zip -x \*.DS_Store -r directory
In der folgenden Ausgabe enthält a.zip
die mit dem zip
Befehlszeilenprogramm erstellte Ausgabe kein __MACOSX
Verzeichnis, a 2.zip
die ich jedoch mit dem Finder erstellt habe.
$ 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
schließt .DS_Store
Dateien in Verzeichnissen nicht aus , -x \*.DS_Store
tut es aber .
Die Datei der obersten Ebene eines Zip-Archivs mit mehreren Dateien sollte normalerweise ein einzelnes Verzeichnis sein, da andere nicht archivierende Dienstprogramme (wie unzip
und 7z
, aber nicht das Archivierungsdienstprogramm, The Unarchiver unar
, oder) vorhanden sinddtrx
) kein enthaltendes Verzeichnis für das Verzeichnis erstellen Dateien, wenn das Archiv extrahiert wird, was häufig das Auffinden der Dateien erschwert. Wenn mehrere solcher Archive gleichzeitig extrahiert werden, kann es schwierig sein, festzustellen, welche Dateien zu welchem Archiv gehören.
Das Archivierungsdienstprogramm erstellt ein __MACOSX
Verzeichnis nur, wenn Sie ein Archiv erstellen, in dem mindestens eine Datei Metadaten wie erweiterte Attribute, Dateiflaggen oder einen Ressourcengabel enthält. Das __MACOSX
Verzeichnis enthält AppleDouble-Dateien, deren Dateiname damit beginnt und ._
die zum Speichern von OS X-spezifischen Metadaten verwendet werden. Das zip
Befehlszeilenprogramm verwirft Metadaten wie erweiterte Attribute, Dateiflaggen und Ressourcengabeln. Dies bedeutet auch, dass Metadaten wie Tags verloren gehen und Aliase nicht mehr funktionieren, da die Informationen in einer Aliasdatei in einer Ressourcengabel gespeichert sind.
Normalerweise können Sie die OS X-spezifischen Metadaten einfach verwerfen, aber um zu sehen, was Metadatendateien enthalten, können Sie sie verwenden xattr -l
. xattr
Enthält auch Ressourcengabeln und Dateiflaggen, da auf sie über die Schnittstelle für erweiterte Attribute zugegriffen werden kann, obwohl sie nicht als erweiterte Attribute gespeichert sind. Sowohl das Archivierungsdienstprogramm als auch das zip
Befehlszeilenprogramm verwerfen ACLs.