Das zipBefehlszeilenprogramm erstellt niemals ein __MACOSXVerzeichnis. 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.zipdie mit dem zipBefehlszeilenprogramm erstellte Ausgabe kein __MACOSXVerzeichnis, a 2.zipdie 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_Storeschließt .DS_StoreDateien in Verzeichnissen nicht aus , -x \*.DS_Storetut 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 unzipund 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 __MACOSXVerzeichnis nur, wenn Sie ein Archiv erstellen, in dem mindestens eine Datei Metadaten wie erweiterte Attribute, Dateiflaggen oder einen Ressourcengabel enthält. Das __MACOSXVerzeichnis enthält AppleDouble-Dateien, deren Dateiname damit beginnt und ._die zum Speichern von OS X-spezifischen Metadaten verwendet werden. Das zipBefehlszeilenprogramm 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. xattrEnthä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 zipBefehlszeilenprogramm verwerfen ACLs.