Vor ein paar Wochen hatte ich mit BetterZip meinen neuen Favoriten für die Datei-Archivierung unter macOS vorgestellt.
Wesentlich nerdiger aber nicht weniger interessant ist der Archive Assistant.
Dabei handelt es sich um ein (AppleScript-)Skript, das auf recht einfache Art und Weise beim Erstellen von Archiven und Disk Images behilflich ist. Das Entpacken von Archiven beherrscht das Skript dahingegen nicht.
Installation des Skripts
Möchte man das Skript über das Menüleisten-Icon von Apples Skript-Editor starten, muss man es nach ~/Library/Scripts
kopieren.
Dazu gibt es natürlich die Möglichkeit das Skript mit Schnellstartern wie LaunchBar oder Alfred sowie meiner allzeit beliebten Allzweckwaffe Keyboard Maestro zu starten. Hier ist der Speicherort des Skripts dann wieder egal, da innerhalb dieser Apps der Pfad angegeben wird.
Was kann das Skript?
Wie schon geschrieben, geht es um das Erstellen von Dateiarchiven.
Dabei bleiben die Mac-typischen Metadaten (spotlight comments, openmeta tags, “resource fork”, extended attribute, ACLs) vollständig erhalten. Es gibt aber auch zwei Sonderfälle, die auf das Speichern von Metadaten verzichten und sich somit vorzüglich für das Versenden von Archiven an Windows-Nutzer eignen.
Dazu unterstützt das Skript verschiedene Dateiarchiv-Formate, wählbare Komprimierungsstufen, Archivverschlüsselung per AES und vieles mehr. Detailliert lässt sich folgende Aufstellung festhalten:
Folgende Archive/Images können erstellt werden:
- tar, unkomprimiert
- tar, gzip-komprimiert (tar.gz)
- tar, bzip2-komprimiert (tar.bz2)
- tar, lzma2-komprimiert (tar.xz)
- xar, unkomprimiert
- xar, gzip-komprimiert
- xar, bzip2-komprimiert
- zip (zwei Varianten)
- 7z (lzma2)
- dmg, read/write
- dmg, read-only
- dmg, zlib-komprimiert
- dmg, bzip2-komprimiert
- dmg, Sparse-Image
- dmg, Sparse-Bundle
…und weitere Features:
- Dateien zu tar-, cpio-, pax-, zip-, 7z-Archiven hinzufügen.
- Dateien zu Read-only- oder komprimierten dmg via Shadow-File hinzufügen („shadow mount“).
- Konvertieren zwischen verschiedenen dmg-Formaten.
- Einstellbare dmg-Größe.
- Zip, 7z und alle dmg-Typen optional AES-verschlüsselt.
- Ändern des Passworts eines dmg.
- Wählbare Komprimierungsstufen für Archive und dmgs.
- Detaillierte Settings für lzma2-Komprimierung (xz und 7z), einschließlich Dictionary-Size, Word-Size, Multi-/Singlethreading, Solid/Non-solid/Solid by Filetype.
- Möglichkeit, die fertig komponierte Befehlszeile ins Terminal zu kopieren, für eventuelle weitere Ad-hoc-Einstellungen.
Benutzung des Skripts
Erstellen von Archiven
In einem ersten Schritt markiert man in Apples Finder eine oder mehrere Dateien und/oder Verzeichnisse und startet das Skript.
Anschließend wählt man den Typ des Archives aus, woraufhin man in die Archiveinstellungen gelangt. Mit gedrückter Cmd-Taste können hier auch mehrere Optionen gewählt werden, die dann für das wiederholte Verwenden für den Archivtyp gespeichert sind.
Danach vergibt man ggf. ein Passwort und wählt das Zielverzeichnis sowie den Namen des Archives aus. Das Skript verrichtet nun seine Arbeit im Hintergrund. Nachdem das Archiv erstellt ist, wird ein kleiner Statusbericht angezeigt.
Die Archiveinstellungen sind übrigens kontextsensitiv und zeigen nur die Optionen an, die für die ausgewählte Datei sinnvoll sind.
Für die unterstützten Archivtypen tar, xar, 7z, zip und die verschiedenen Disk Images ergeben sich beispielshaft folgende unterschiedliche Options-Untermenüs:
Normaler Modus vs. Terminal Modus
Ich sagte ja bereits, dass das Skript im normalen Modus im Hintergrund läuft und nach Beendigung des Jobs einen kleinen Statusbericht anzeigt.
Darüber hinaus kann man die Kommandos auch im Terminal ausführen. Das Skript unterschiedet hier zwischen Run in Terminal und Paste into Terminal.
Während im ersten Fall alle Befehle mit maximaler Geschwätzigkeit im Terminal ausgeführt werden, wird im zweiten Fall nur das Kommando mit allen im Menü gewählten Optionen ins Terminal kopiert aber nicht ausgeführt. Das hat vor allem dann Charme, wenn man in speziellen Fällen an Details des Kommandos schrauben möchte, die über das Menü des Skripts nicht einstellbar sind.
Daten zum Archiv hinzufügen
Für dieses Vorhaben gibt es mit -> Add to Existing Archive einen speziellen Punkt im Startmenü des Archive Assistant.
Hat man eine oder mehrere Dateien bzw. Verzeichnisse markiert und im Skriptmenü diesen speziellen Punkt gestartet, muss man zunächst einmal das bestehende Archiv auswählen, zu dem Daten hinzugefügt werden sollen.
Anschießend landet man in den normalen (kontextsensitiven) Archiveinstellungen, die man schon vom Erstellen von Archiven kennt.
Das Hinzufügen von Daten funktioniert per Skript übrigens nur bei unkomprimierten Unix-typischen Archiven wie tar, cpio oder pax sowie zip- und 7z-Archiven. Möchte man Daten zu einer dmg-Datei hinzufügen, kann das einfach über den Finder per drag-and-drop in das eingehängte Image erledigt werden.
Disk Images
Auch wenn Disk Images streng genommen keine Archive sind, kann man sie unter macOS wunderbar als solche verwenden. Genau deshalb sind sie auch Teil dieses Skripts.
Das Erstellen von dmg-Dateien gleicht im Prinzip dem Erstellen von normalen Archiven. Die Optionen sind hier formatbedingt allerdings etwas limitiert. Zudem muss man ggf. die Größe des Disk Images angeben.
Wesentlich interessanter sind dahingegen die dmg-Actions, die auf bestehende Disk Images angewendet werden können.
So kann man beispielsweise eine Konvertierung zwischen den verschiedenen dmg-Formaten vornehmen sowie die Größe oder bei verschlüsselten Disk Images das Passwort nachträglich ändern.
Auch vergleichsweise selten verwendete dmg-Features wie das Shadow File werden vom Skript unterstützt.
Mit diese Option, des von macOS vorinstallierten Kommandozeilentools hdiutil, kann man Dateien zu read-only oder komprimierten Disk Images per Shadow Mount hinzufügen.
Use a shadow file in conjunction with the data in the image. This option prevents modification of the original image and allows read-only images to be attached read/write. When blocks are being read from the image, blocks present in the shadow file override blocks in the base image. All data written to the attached device will be redirected to the shadow file. If not specified, -shadow defaults to image.shadow. If the shadow file does not exist, it is created. Verbs accepting -shadow also accept -cacert and -insecurehttp.
Technisches
Das Skript ist mit OS X Yosemite oder höher kompatibel und nutzt, neben dem schon erwähnten hdiutil, die ebenfalls von macOS mitgelieferten Tools tar, pax, xar, ditto und basename/dirname.
Darüber hinaus ist p7zip, ein Port von 7-zip, im Script-Bundle enthalten. Dieses Tool wird nicht nur für 7z-Archive, sondern auch für gz, bz2, xz und teilweise zip verwendet, da es multi-threaded schneller und effizienter arbeitet als die entsprechenden Unixtools.
Sonstiges
Trotzdem diese Review des Archive Assistant schon vergleichsweise lang ist, habe ich die Funktionalität des Skriptes längst nicht umfassend dargestellt. Daher empfehle ich jedem Interessenten sich das dem Download beiliegende Handbuch genauer durchzulesen.
Dort hat Tom, der verantwortliche Entwickler des Archive Assistant, auf 17 Seiten jeden Funktion und Option genau erklärt. Auch zu den einzelnen Archivtypen, sowie dem Handling der Metadaten gibt es weiterführende Informationen.
-> http://dflect.net/archive-assistant