Schnelles Backup mit Mac-OS X

Timemachine unter Tiger mit Unix-Befehlen

Apple liefert kostenlos eine Backup-Software mit Mac-OS X 10.4 aus. Allerdings fehlen ein deutsches Handbuch und jedwede grafische Oberfläche. Doch rsync funktioniert – nach der mühsamen Konfiguration – im Grunde wie Timemachine.

Von Walter Mehl (28.08.2007)

Ein Unix-Programm, das man sehr gut für ein Backup nutzen kann, heißt rsync (im Ordner „/usr/bin/“, der im Finder unsichtbar ist). Es ist Open-Source-Software, die dazu gedacht ist, den Inhalt zweier Ordner abzugleichen. Man kann die Daten dabei sogar über ein Netz von einem Rechner auf einen anderen übertragen, doch für unsere Zwecke reichen ein Mac und eine externe Festplatte völlig aus.

TIPP Wir empfehlen dringend, die Sicherungskopie auf einer externen Festplatte zu speichern. Nur damit schützt man sich vor einem Crash der internen Platte im Mac. Zusätzlich schützt die externe Platte vor den Gefahren einer bis zum Limit gefüllten Backup-Festplatte – im Zweifelsfall ist bei einem solchen Überlauf das Backup beschädigt, die Originaldaten auf der internen Festplatte aber bleiben intakt.

TIPP Externe USB-Festplatten mit einer Kapazität von 500 GB nur noch wenig mehr als 100 Euro. Platten mit Firewire-Anschluss sind um einige Euro teurer, dafür benötigt das Backup über Firewire aber deutlich weniger Zeit.

Sicherungskopie des Benutzerordners

Trick: Wer sich über die korrekte Schreibweise des englischen Namens eines Ordners unsicher ist, braucht Finder und das Dienstprogramm Terminal.
Trick: Wer sich über die korrekte Schreibweise des englischen Namens eines Ordners unsicher ist, braucht Finder und das Dienstprogramm Terminal.
Das Skript, das wir für das Backup des Benutzerordners verwenden, basiert auf der englischen Beschreibung von Macgeekery. Technisch arbeitet das Original-Skript fehlerlos, allerdings fehlen die Automatisierung und die Anpassung an die Besonderheiten der deutschsprachigen Variante von Mac-OS X, die hierzulande wohl die Regel sein dürfte. In unseren Tests funktioniert das Backup-Skript einwandfrei, aber wie immer bei Unix-Programmen gilt: Benutzung auf eigene Gefahr!

Einfach: Vom Finder zieht man eine Datei oder einen Ordner auf das Fenster von Terminal und lässt dort die Maustaste los.
Einfach: Vom Finder zieht man eine Datei oder einen Ordner auf das Fenster von Terminal und lässt dort die Maustaste los.
Das Skript hat handfeste Vorteile gegenüber einer im Finder erstellten Kopie des Benutzerordners: Das Skript erhält alle Benutzerrechte und Alias-Verknüpfungen. Aber noch wichtiger: Nach der ersten Sicherung überträgt es nur noch die geänderten Daten auf die Sicherungsplatte, was die Laufzeit des Backup-Vorgangs dramatisch reduziert.

Zu viel: Bei Ordnern fügt das Dienstprogramm Terminal allerdings am Ende einen Schrägstrich an, den man für das Backup-Skript nicht mitkopieren sollte.
Zu viel: Bei Ordnern fügt das Dienstprogramm Terminal allerdings am Ende einen Schrägstrich an, den man für das Backup-Skript nicht mitkopieren sollte.
TIPP Das Skript kann in der vorliegenden Fassung nur den Inhalt des Benutzerordners sichern. Der Grund dafür sind die Benutzerrechte: Nur innerhalb des eigenen Ordners hat jeder Benutzer alle Schreib- und Leserechte. Wer andere Ordner des Mac sichern will, muss einige Teile ändern, um das Skript als Benutzer „root“ laufen zu lassen. Die Beschreibung der Änderungen würde den Rahmen dieses Artikels aber sprengen.

Eigentlich sind zwei Unix-Befehle nötig

Die Sicherungskopie erzeugt man mit dem Unix-Befehl rsync. Ab dem zweiten Aufruf des Skripts kommt aber zusätzlich der Befehl cpio ins Spiel, der eine identische Kopie der Sicherungskopie erzeugt und die Verzeichnisstrukturen aufrecht erhält.

Das Skript erzeugt in der aktuellen Fassung maximal vier Unterordner auf der Backup-Festplatte und benennt sie „tageskopie.0“ bis „tageskopie.3“. In jedem dieser Unterordner wird eine Sicherungskopie gespeichert.

Anpassung: Diese drei Zeilen müssen im Skript geändert werden. Dort definieren wir den Namen des Benutzerordners, des Backup-Ordners und den Namen der Ausnahmeliste.
Anpassung: Diese drei Zeilen müssen im Skript geändert werden. Dort definieren wir den Namen des Benutzerordners, des Backup-Ordners und den Namen der Ausnahmeliste.
Das Wiederherstellen defekter oder gelöschter Daten ist allerdings ein Schwachpunkt der Unix-Lösung: Es gibt keine Hilfe dabei. Wer später einzelne Dateien aus der Sicherungskopie wieder zurück auf die interne Festplatte kopieren will, muss im Finder arbeiten: Man wechselt im Finder auf die externe Festplatte und dort in den Ordner, den man im Skript genannt hat: Das Skript hat darin maximal vier Ordner erstellt, deren Namen mit „tageskopie“ beginnt, gefolgt von einem Punkt und einer fortlaufenden Ziffer. Die Ziffer 0 steht für die aktuellste Version der Daten, die Ziffer 3 für die älteste. Wechselt man in diesen Unterordner, sieht man einen weiteren Ordner, dessen Name dem Kurznamen des Benutzers entspricht. Darin steckt die Sicherungskopie des Benutzerordners.

Um eine Datei oder einen Ordner aus der Sicherung wiederherzustellen, kopiert man ihn von der externen Festplatte zurück auf die interne.

Das Skript muss angepasst werden

Zeilenweise: In einer Textdatei definieren wir, welche Dateien und Ordner nicht mit in das Backup kopiert werden sollen, zum Beispiel alle Cache-Dateien und den Papierkorb.
Zeilenweise: In einer Textdatei definieren wir, welche Dateien und Ordner nicht mit in das Backup kopiert werden sollen, zum Beispiel alle Cache-Dateien und den Papierkorb.
Das Skript enthält mehrere Zeilen, die geändert werden müssen, bevor es auf einem bestimmten Mac funktioniert. Zwei Zeilen zum Beispiel entscheiden darüber, welcher Ordner gesichert wird und auf welcher externen Festplatte die Sicherungskopie gespeichert wird.

TIPP Aus Sicherheitsgründen haben wir den eigentlichen Kopierbefehl so verändert, dass er nur anzeigt, welche Dateien gesichert werden, aber den Kopiervorgang nicht ausführt. Im folgenden Text ist beschrieben, wie man diese Sicherungen entfernt und das Skript nutzbar macht.

Zwei der wichtigsten Parameter stehen im Skript ziemlich weit oben: Die Namen des Ausgangspunktes, sprich: des Benutzerordners, und der Name des Zielordners müssen als Text in das Skript eingetragen werden. Wir empfehlen, beide mit einem Trick in das Skript zu kopieren, um Tippfehler von vornherein auszuschließen (der Trick funktioniert auch in Texteditoren wie Textwrangler, Smultron, BB-Edit oder Subethaedit; dort ist der Umweg über Terminal nicht notwendig).

TIPP Man startet das Dienstprogramm Terminal und zieht den gewünschten Benutzerordner auf das Fenster von Terminal. Lässt man die Maustaste los, erzeugt das Terminal automatisch die von uns benötigte englische Namensform des Ordners. Diesen Namen wählt man mit der Maus aus – ohne den Schrägstrich am Ende – und kopiert ihn dann in das Skript. Mit diesem Trick verhindert man Tippfehler und erhält außerdem die englische Form des Namens des Benutzerordners. Nur diese Form lässt sich in unserem Skript verwenden.

In die Zeile darunter muss der Name des Ordners, der die Sicherungskopien enthalten soll. Unser Skript legt in diesem Order bei jedem Aufruf einen Unterordner an (maximal 4) und benennt den Ordner tageskopie.0, tageskopie.1 und so weiter. Wichtig ist, dass dieser Ordner bereits existiert und komplett leer ist – wir wählen hier in unserem Beispiel den Ordner „sicherungskopie“ auf der externen Festplatte „Backup“.

Die darunter erwähnte Ausnahmeliste behandeln wir später in diesem Artikel.

Nur eine Trockenübung

Schutz: Diese Zeile muss man – nach einem Test – aus dem Skript entfernen, sonst sieht es nur so aus, als würde das Backup erzeugt.
Schutz: Diese Zeile muss man – nach einem Test – aus dem Skript entfernen, sonst sieht es nur so aus, als würde das Backup erzeugt.
Im Skript haben wir eine ganz wesentliche Sicherung eingebaut: Das Schlüsselwort „--dry-run“ sagt dem Unix-Befehl rsync, dass wir uns im Moment in der Testphase befinden. Das heißt, dass der Befehl alle Dateien ermittelt, die synchronisiert werden müssen. Zugleich prüft er, welche Dateien und Ordner in der Ausnahmeliste stehen. Aber zum Schluss wird diese Datei- und Ordnerliste nur angezeigt, aber nicht auf die externe Festplatte kopiert. Das bedeutet, dass im Fenster von Terminal, in dem wir das Skript zum Text aufrufen, die komplette Liste der Dateien sichtbar wird, die in die Sicherungskopie aufgenommen wird.

Pro Datei in dieser Liste erzeugt rsync eine Zeile im Terminal und nennt dort den vollen Namen – sprich: die Zeile dau/Desktop steht zum Beispiel für den Ordner „Schreibtisch“ im Privatordner des Benutzers „dau“ (= /Benutzer/dau ).

Bevor man aber diese Option aus dem Skript löscht und es zum ersten Mal startet, muss noch der folgende Schritt erledigt werden: Die Definition der Dateien und Ordner, von denen wir keine Sicherungskopie anlegen wollen.

Was nicht gesichert werden soll

Den Inhalt des Papierkorbs und die zahlreichen Zwischenspeicher („Cache“) verschiedener Programme wollen wir nicht in die Sicherungskopie aufnehmen. Deshalb erzeugen wir mit unserem Texteditor die Datei „ausnahme_vom_backup“, die wir direkt im Benutzerordner speichern (oder in einem beliebigen anderen Ordner innerhalb dieses Benutzerordners).

Wer die vordefinierte Datei übernimmt, erhält eine Sicherungskopie, in der der Inhalt des Papierkorbs und die Cache-Dateien fehlen. Wer weitere Ordner vom Backup ausnehmen will, sollte die Ausnahmeliste in einem Texteditor öffnen und die Ordner einfach aus dem Finder in eine neue Zeile der Ausnahmeliste ziehen.

Da rsync den Benutzerordner als den obersten Punkt in der Ordnerhierarchie ansieht, muss man aber Anfang und Ende dieser Zeile verändern und die Buchstaben „/Users“ löschen. Wer beispielweise den Ordner „Filme“ beim Backup überspringen will, zieht ihn vom Finder in den Texteditor und verkürzt (in unserem Beispiel mit dem Benutzer „dau“) den Eintrag von „/Users/dau/Movies“ auf „/dau/Movies“.

Das fertige Skript sichern und ausführen

Startphase Im Dienstprogramm Terminal muss man mit dem Befehl „chmod“ das Skript als ausführbar kennzeichnen.
Startphase Im Dienstprogramm Terminal muss man mit dem Befehl „chmod“ das Skript als ausführbar kennzeichnen.
Ist die Ausnahmeliste definiert, steht der Ausführung des Skripts fast nichts mehr im Wege. Wer ohne Ausnahmeliste arbeitet, sollte daran denken, eine leere Datei mit dem Namen „ausnahme_vom_backup“ in seinem Benutzerordner zu erzeugen. Andernfalls funktioniert das Skript nicht.

Dann speichert man das Skript an einer beliebigen Stelle (zum Beispiel im Ordner „Dokumente“ im Benutzerordner) und startet das Dienstprogramm Terminal. Denn im Moment ist das Skript nur eine Textdatei – erst nach einer Änderung in der Unix-Befehlszeile lässt sich dieses Skript im Terminal starten.

Für die Änderung braucht man den Befehl „chmod“, mit dem man Attribute einer Datei ändert. Wir müssen bei unserem Skript das Execute-Bit setzen, damit sich die Datei in der Unix-Befehlszeile ausführen lässt.

chmod +x /Users/dau/rsync_backup_taeglich

Sprich: Man tippt im Fenster von Terminal „chmod“, ein Leerzeichen, „+x“ und ein weiteres Leerzeichen ein. Danach zieht man das Skript vom Finder auf das Fenster von Terminal. Terminal fügt den vollen Dateinamen in die Befehlszeile ein. Dann wechselt man zurück zum Dienstprogramm Terminal und führt diese Zeile mit einem Druck auf die Eingabetaste aus.

Um das Skript auszuführen, tippt man dann den vollständigen Pfad ein. Bei uns im Beispiel wären das also die folgenden Zeilen und betätigt anschließend den Zeilenschalter.

/Users/dau/Documents/rsync_backup_taeglich

Damit sind alle Vorbereitungen abgeschlossen. Das Skript kann laufen. Wir empfehlen einen ersten Versuch mit der Option „--dry-run“. Denn damit sieht man sofort, ob alles funktioniert oder ob Fehlermeldungen das Backup verhindern.

Start: Um das Skript auszuführen, muss man den kompletten Namen im Dienstprogramm Terminal eintippen. Wer tippfaul ist, zieht das Skript vom Finder auf das Fenster von Terminal.
Start: Um das Skript auszuführen, muss man den kompletten Namen im Dienstprogramm Terminal eintippen. Wer tippfaul ist, zieht das Skript vom Finder auf das Fenster von Terminal.
Danach entfernt man im Skript die Option „--dry-run“ und startet das Skript erneut. Die erste Datensicherung dauert lange, weil damit alle Dateien und Ordner des Benutzerordners auf die externe Festplatte kopiert werden müssen. Die Dauer beeinflussen außerdem die Geschwindigkeit der Festplatte, der Schnittstelle (USB oder Firewire) und der Prozessorgeschwindigkeit des Mac. Auf einem Powerbook G4 mit USB-1.1-Anschluss zum Beispiel benötigen wir bei der Sicherung von sechs Gigabyte ungefähr 1 Stunde und 15 Minuten. Über Firewire braucht ein Macbook Pro dagegen für die gleiche Datenmenge 15 Minuten.

Nach dem ersten erfolgreichen Lauf sollte man das Ergebnis sofort kontrollieren: Auf der externen Festplatte sollte im Backup-Ordner (bei uns im Test: „sicherungskopie“) der Unterordner „tageskopie.0“ existieren. Und darin wiederum steht der Benutzerordner (bei uns „dau“) mit seinem kompletten Inhalt.

So holt man Daten aus der Sicherungskopie zurück

Klappt die Sicherung mit dem Skript, sollte man bei nächster Gelegenheit einen Test machen und eine beliebige Datei von der Sicherungskopie zurück auf die interne Festplatte kopieren. Man muss die externe Festplatte anschließen und öffnet im Finder den gewünschten Ordner innerhalb der Sicherungskopie und zieht die Datei zurück auf die interne Festplatte. Hat alles funktioniert, sollte sich die Datei nach einem Doppelklick wie gewohnt öffnen.

In der vorliegenden Form sichert das Skript alle Dateien, Ordner und Alias-Verknüpfungen. Außen vor bleiben nur Dateien, die dem Benutzer nicht gehören: Wer eine Software auf dem Schreibtisch speichert, kann davon in der Regel kein Backup mit rsync erzeugen (außerdem werden Fehlermeldungen im Terminalfenster sichtbar). Der Grund ist die interne Struktur eines Mac-OS-X-Programms, die oft Dateien enthält, für die man nur Leserechte hat. Rsync setzt aber voraus, dass man für die zu sichernden Daten Schreib- und Leserechte hat.

Fazit

Uns gefällt die Backup-Lösung mit rsync – sie ist Bestandteil des Mac-OS und damit kostenlos, schnell und funktioniert in unserem Test über mehrere Wochen zuverlässig. Da die Konfiguration und der Test aber eine gewisse Grundkenntnis der Unix-Befehlszeile voraussetzen, können wir diese Lösung nicht für Einsteiger empfehlen. Die beiden Skripte auf der Heft-CD sind zwar harmlos, doch ohne dieses Grundwissen ist es nicht einfach, die Skripte in ein sinnvolles Backup-Programm zu verwandeln.

Info: Voraussetzungen

Diese Bedingungen sollten erfüllt sein, damit das Backup klappt

- Externe Festplatte (oder eine zweite interne Festplatte)

- Texteditor (Textwrangler, BB-Edit, Subethaedit, Smultron oder andere)

- Beispiel-Skript und der Liste jener Dateien, die beim Backup nicht gesichert werden

- Grundkenntnisse der Unix-Befehlszeile („shell“)

Backup: Die fünf To-Dos

1. Skript und Ausnahmeliste in den eigenen Benutzerordner kopieren.

2. Im Skript Name des Benutzerordners, Name des Backup-Ordners und Speicherort der Ausnahmeliste eintragen.

3. Skript im Dienstprogramm Terminal als ausführbar kennzeichnen.

4. Einen Testlauf mit der Skript-Option „--dry-run“ durchführen.

5. Option „--dry-run“ entfernen und erste Sicherungskopie anlegen.

Richtig editieren

Das Skript nutzt Unix-Befehle, deshalb darf es nicht mit einem Mac-Editor wie Word erstellt oder geändert werden. Wir empfehlen als Texteditor Smultron von Peter Borg (deutsche Oberfläche) oder Textwrangler von Barebones (englische Oberfläche) – beide sind kostenlos im Internet erhältlich.

Newsletter bestellen: Newsletter und Wochenchronik

Das könnte Sie auch interessieren:

Mehr zu diesen Stichwörtern: ac-os x, rsync, backup, time machine

Beta