Was waren das noch für Zeiten, als man zum Verpacken von Dateien auf StuffIt angewiesen war?
Schon seit langer Zeit bietet MacOS X die Möglichkeit, über den Kontextmenüeintrag "xy komprimieren" (früher mal noch irreführend "verpacken" benannt) eine ZIP-Datei zu erstellen.
Praktisch, um die Dateigröße für die Weitergabe zu verringern oder die Mac-Resourcen beim Weg über's Internet zu erhalten.
Des einen Freud' ist allerdings des anderen Leid':Entpackt ein Windows-User das am Mac erstellte Windows-Archiv, wird er zudem von einem Ordner __MACOSX belästigt, welcher dieselbe Ordnerstruktur mit (scheinbar) leeren Ordnern beinhaltet, wie das eigentliche Archiv (siehe rechts).
Schlimm ist die Sache nicht, kann den einen oder anderen Windows-User allerdings nerven, wobei das eigentliche ärgerliche an dieser Sache ist, dass das Windows-ZIP-Programm auch heute noch nicht mit diesen Mac-Resourcen klar kommt und diese schlicht ignoriert. Unter MacOS X erstellte ZIP-Archive sind schon längst keine kleine Randerscheinung mehr.
Da sich diese Resourcen-Ordner inzwischen in unserem PC-verseuchten Netzwerk ansammeln und ich sie teilweise am Mac nichtmal löschen kann, da sie angeblich irgendwelche Dateien enthalten, die in Verwendung sind, habe ich ein kleines Automator-Plugin geschrieben, mit welchem sich resourcen-freie ZIP-Archive am Mac erstellen lassen.
Darauf achten, dass ganz oben ausgewählt ist "Dienst empfängt ausgewählte Dateien und Ordner" in "Finder"
und
"Eingabe übergeben: Als Argumente" bei dem Shell-Skript.
declare -a parts
declare i=0
names=("$@")
name="$1"
while x=$(dirname "$name"); [ "$x" != "/" ]
do
parts[$i]="$x"
i=$(($i + 1))
name="$x"
done
for prefix in "${parts[@]}" /
do
for name in "${names[@]}"
do
if [ "${name#$prefix/}" = "${name}" ]
then continue 2
fi
done
dir="$prefix"
break
done
cd "$dir"
for file in "${names[@]}"
do
zip zip-file.zip -r -X "${file#$dir/}"
done
Möchte man dieses Untermenü etwas aufräumen (da hat sich bei mir ziemlich viel unnötiger Mist angesammelt), kann man dies übrigens einerseits in den Systemeinstellungen unter Tastatur > Kurzbefehle > Dienste (wo man einem Dienst außerdem einen Hotkey zuordnen kann) und andererseits über den Ordner ~/Library/Services machen.
Natürlich kann man denselben Weg auch verwenden, um .tar oder .tar.gz-Archive zu erstellen.
Die letzten vier Zeilen des Codes müssten hierfür wie folgt abgeändert werden:
do
tar -rvf archiv.tar "${file#$dir/}"
done
gzip archiv.tar
(Bei dieser Variante bleiben Resourcen-Daten vorhanden)
do
COPYFILE_DISABLE=1 tar -rvf archiv.tar "${file#$dir/}"
done
gzip archiv.tar
(Bei dieser Variante werden Resourcen-Daten ausgelassen)
Anmerkung:
Alle drei Varianten sind noch nicht so ganz von mir auf Herz und Nieren geprüft worden.Erstellt am: 29.03.2019 | .Kommentieren |