Narzędzie zip
wiersza poleceń nigdy nie tworzy __MACOSX
katalogu, więc możesz po prostu uruchomić takie polecenie:
zip directory.zip -x \*.DS_Store -r directory
Poniższe dane wyjściowe, a.zip
które utworzyłem za pomocą zip
narzędzia wiersza poleceń, nie zawierają __MACOSX
katalogu, ale a 2.zip
który utworzyłem za pomocą Findera.
$ 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
nie wyklucza .DS_Store
plików wewnątrz katalogów, ale -x \*.DS_Store
robi.
Plik najwyższego poziomu archiwum zip z wieloma plikami powinien zwykle być pojedynczym katalogiem, ponieważ jeśli tak nie jest, niektóre narzędzia do archiwizacji (takie jak unzip
i 7z
, ale nie Archive Utility, The Unarchiver unar
lubdtrx
) nie tworzą katalogu zawierającego pliki po rozpakowaniu archiwum, co często utrudnia ich znalezienie, a jeśli wiele archiwów jest rozpakowywanych w tym samym czasie, określenie, które pliki należą do którego archiwum, może być trudne.
Archive Utility tworzy __MACOSX
katalog tylko wtedy, gdy tworzysz archiwum, w którym co najmniej jeden plik zawiera metadane, takie jak atrybuty rozszerzone, flagi plików lub rozwidlenie zasobów. __MACOSX
Katalog zawiera pliki, których nazwa pliku AppleDouble rozpoczyna się ._
, które są używane do przechowywania OS X specyficzne metadanych. Narzędzie zip
wiersza poleceń odrzuca metadane, takie jak atrybuty rozszerzone, flagi plików i rozwidlenia zasobów, co oznacza również, że metadane, takie jak znaczniki, są tracone, a aliasy przestają działać, ponieważ informacje w pliku aliasów są przechowywane w rozwidleniu zasobów.
Zwykle możesz po prostu odrzucić metadane specyficzne dla OS X, ale aby zobaczyć, jakie pliki metadanych zawierają, możesz użyć xattr -l
. xattr
zawiera również rozwidlenia zasobów i flagi plików, ponieważ nawet jeśli nie są one faktycznie przechowywane jako atrybuty rozszerzone, można uzyskać do nich dostęp poprzez interfejs atrybutów rozszerzonych. Zarówno Archive Utility, jak i zip
narzędzie wiersza poleceń odrzucają listy ACL.