Backup-Skript mit AppleScript erstellen

In älteren Beiträgen hatte ich bereits das Kommandozeilenprogramm rsync vorgestellt. Dieses Tool kann beispielsweise in einem Automator-Workflow verwendet werden, um bestimmte Verzeichnisse zu sichern.

Mehr Flexibilität bietet aber die Verwendung von AppleScript oder JavaScript. Beide Programmiersprachen können in dem — auf jedem macOS vorhandenen — Skripteditor verwendet werden, um Arbeitsabläufe zu automatisieren.

In diesem Tutorial möchte ich zeigen, wie mit AppleScript und rsync ein einfaches Backup-Skript geschrieben werden kann. Dieses Skript könnte Euch dann als Vorlage für die Umsetzung eigener Ideen dienen.

Der Skripteditor

Apples Skripteditor versteckt sich im Verzeichnis

> Programme > Dienstprogramme

Nach dem Start öffnet Ihr ein bereits vorhandenes Dokument oder klickt auf „Neues Dokument“. Es erscheint dann folgende Ansicht:

Ein leeres Apple-Skript-Fenster

Da mir die verwendete Schrift zu klein war, habe ich dies über

> Skripteditor > Einstellungen > Formatierung

geändert.

Schrift im Skripteditor einstellen

Wählt dort eine Kategorie aus und nutzt anschließend die Tastenkombination command + a, um alle Zeilen zu markieren. Mit einem Doppelklick auf den so markierten Bereich öffnet Ihr das Schriften-Fenster, in dem Ihr jetzt die gewünschte Schriftart und die Schriftgröße aussuchen könnt. Abschließend müsst Ihr Eure Wahl mit einem Klick auf „Anwenden“ speichern.

Der Code

Bevor es richtig losgeht, ein Hinweis zu Kommentaren. Diese werden in AppleScript mit zwei Bindestrichen (--) eingeleitet. Hier beginne ich mit einer kurzen Beschreibung und der Versionsnummer

-- Daten mit rsync sichern
-- Version 1.0

In diesem Beispiel soll das Verzeichnis „Artikel“, das sich auf dem Schreibtisch befindet, auf einem USB-Stick mit der Bezeichnung „Backups“ gesichert werden. Die dafür erforderliche rsync-Anweisung sieht wie folgt aus:

rsync -av --delete /Users/bodo/Desktop/Artikel/ /Volumes/Backups/Artikel

Wenn Ihr dieses Beispiel auf Eurem Mac ausprobieren möchtet, müsst Ihr darauf achten, den Pfad anzupassen. So ist der Benutzername „bodo“ durch Euren Benutzernamen zu ersetzen.

Wichtiger Hinweis: Bei rsync ist die Verwendung der richtigen Syntax von besonderer Bedeutung. Andernfalls kann es zu Datenverlust kommen. Aus diesem Grund solltet Ihr zunächst von einem Testordner (mit bedeutungslosem Datenmüll) ein Backup erstellen und Euch dann erst an die wirklich wichtigen Dateien heranwagen.

Als Optionen sind hier -av und --delete angegeben. Das -a steht für archive, also für die Archivierungsfunktion von rsync. Und -v steht für verbose, wodurch zahlreiche Meldungen zum Backup-Vorgang ausgegeben werden. Letzteres ist von Bedeutung, wenn der Code im Skripteditor getestet wird.

Damit ist rsync erklärt. Wie wird nun dieser Befehl in AppleScript „eingebaut“? Zunächst gar nicht. Denn beginnen möchte ich mit einem Dialog, der den Benutzer um eine Bestätigung bittet:

-- Confirm the process
set theDialogText to "Dieses Programm sichert alle Dateien des Ordners 'Artikel' auf den USB-Stick. Soll das Backup gestartet werden?"
display dialog theDialogText with icon caution

Der Code sollte selbsterklärend sein. Mit „set theDialogText to“ wird der anzuzeigende Text festgelegt. Die Zeile „display dialog theDialogText with icon caution“ zeigt das Dialogfenster an, wobei mit „with icon caution“ zusätzlich zum Text ein Icon erscheint.

Standardmäßig hat so ein Dialogfenster zwei Buttons: „Ok“ und „Abbrechen“. Nach einem Klick auf „Ok“ wird der nachfolgende Code ausgeführt. Ein Klick auf „Abbrechen“ beendet hingegen die Ausführung des Skripts.

Ein mit Apple Skript erzeugtes Dialog-Fenster

Nach dem Code für das Dialogfenster folgt die rsync-Anweisung, die in do shell script eingebunden werden muss:

do shell script "rsync -av --delete /Users/bodo/Desktop/Artikel/ /Volumes/Backups/Artikel"

Nach einem Klick auf den Play-Button wird das Skript ausgeführt. Im Ergebnisfenster erscheinen die zu sichernden Dateien.

Apple Skript starten

Der komplette Code sieht wie folgt aus:

-- Daten mit rsync sichern

-- Version 1.0


-- Ausführung bestätigen

set theDialogText to "Dieses Programm sichert alle Dateien des Ordners 'Artikel' auf den USB-Stick. Soll das Backup gestartet werden?"

display dialog theDialogText with icon caution

-- rsync aufrufen

do shell script "rsync -av --delete /Users/bodo/Desktop/Artikel/ /Volumes/Backups/Artikel"

Nach dem Aufrufen des Programms können Fehler auftreten. Deswegen befasst sich die Fortsetzung zu diesem Tutorial mit der Fehlerbehandlung.

Weiterführende Links