Backup OSX via Commandline

Tools wie Carbon Copy Cloner oder rsyncX ermöglichen einfache Teil- und Vollbackups unter OS X. Deutlich flexibler und mit Bordmitteln kann man das unter Snow Leopard und Lion aber auch per Kommandozeile.

Dafür gibt es (unter anderem, viele Wege führen nach Rom) drei Tools: rsync, ditto und asr.

Um einen bootbaren Clone zu erzahlen, muß man ein paar einfache Regeln beachten:

1. Filesystemberechtigunen müssen erhalten bleiben
Viele Files gehören Root, daher kann man diese nicht einfach mit dem Finfder kopieren. Desweiten gibt es noch andere spezielle Merkmaler mancher Files, wie z.B. das SetIUD-Bit, welches auch nicht-pivilegierten Kontan die Ausführung eines Files mit Root-Rechen ermöglicht. Eine einfach Kopie mit dem Finder würde diese Recht in normale Userrechte ändern.

2. Unsichtbare Files müssen kopiert werden.
Der Unterbau von OS X besteht aus einem UNIX-System mit dem Namen “Darwin”. Dessen Systemfiles befinden sich im Rootverzeichnis des Startlaufwerks: /private, /bin, /usr, und /sbin. Diese Verzeichnisse enthalten alle kritischen Systemfiles, die das System zum Start und für grundlegene Dinge braucht.

3. Unix-Links müssen intakt bleiben
Symbolische Links und Hardlinks nicht nicht gleich den Aliases unter Mac OS X! Darum müssen sie auch anders behandelt werden. Da manche dieser Links für einen Systemstart unbeding nötig sind, muß die Integrität dieser Links sichergestellt werden. Der ein oder andere mag schon eine Fehlermeldung wie: “/etc/master.passwd: Not a directory”  gesehen haben – dies ist das Ergebnis, wenn der symbolische Link von /etc nach /private/etc nicht mehr in Ordnung ist.
4. Manche Verzeichnisse werden erst beim Booten gefüllt. Diese müssen beim Start zwar vorhanden sein, dürfen aber beim clonen eines laufenden Systems nicht mit Inhalt kopiert werden.

Ein Beispiel ist der Verzeichnis /Volumes. Steckt man einen USB-Stick oder einen Harddisk an, wird hier automatisch ein neues Verzeichnis mit dem Namen des Datenträgers erzeugt. Diese werden “Mountpoints” genannt, und werden bei Bedarf automatisch vom Automounter erzeugt. Da diese beim Booten nicht existieren, dürfen sie auch nicht kopiert werden. Ebenso ist der Inhalt von /dev nur ein Platzhalter, daher ist es unnötig, den Inhalt zu kopieren. Da diese aber Teil des Systems sind, müssen die Ordner selbst vorhanden sein.

5. Resource forks müssen vorhanden bleiben

Obwohl Apple dabei ist, auf Resource forks zu verzichten, gibt es noch immer viele Anwendungen, die diese benötigen. Darum muß man beim Clonen darauf achten, daß diese korrekt kopiert werden, da ansonsten persönliche Files beschädigt werden können.

* Pre-flight Checkliste

1. Sicherstellen, daß “Eigentümer auf diesem Volume ignorieren” bzw. “Ignore privileges on this volume” auf dem Ziellaufwerk NICHT angehakt ist, da ansonsten die Berechtigungen ignoriert werden, ganz gleich mit welchem Programm die Files kopiert werden.

2. Mittels Disk Utility auf Quell- und Ziellaufwerk das Filesystem überprüfen. Dies ist nicht unbedingt nötig, kann aber Probleme mit bereits beschädigten Filesystemen vermeiden. Beim Clonen eines Systems mit ditto oder asr ist es zu empfehlen, das Ziellaufwerk vorher zu löschen.

* Disk-Cloning oder Fullbackup mit ditto, rsync, hdiutil und asr:

Ditto ist ein command-line Programm, welches mit OS X mitgeliefert wird. Es behält als Standardeinstellung alle Rechte, Links und Resource forks beim kopieren bei.
Die Systemdisk kann mi folgendem Befehl bootfähig kopiert werden:

sudo ditto -X / /Volumes/Backup

rsync kann ebenfalls für bootbare Clones verwendet werden. Zusätzlich zum einfachen kopieren ermöglicht es rsync, Filesysteme zu syncronisieren, d.h. es werden nur die Files kopiert, die sich geändert haben. Genaugenomen werden sogar nur die geänderten Teile innerhalb eines Files kopiert, so daß ein Update eines bestehenden Clones sehr schnell geht. Die Verwendung ist ebenso sehr einfach:

sudo rsync -xrlptgoEv –progress –delete / /Volumes/Backup

Dies kopiert die komplette Festplatte (bzw. die Systempartition), und lösche alles auf dem Ziellaufwerk, was nicht auf der Quelle vorhanden ist. Rechte, Resouce forks und Links werden ebenfalls korrekt kopiert. Zusätzlich ist rsync in der Lage, Backups über ein Netzwerk zu erzeugen.

Zu guter letzt gibt es noch das Tool “Apple Software Restore” (asr). Im Gegensatz zu ditto und rsync kann asr auch blockbasierte Backups zu erzeugen, welche Filesystem-unabhängig sind. Quelle und Ziel sind damit 100% identisch, allerdings werden damit auch Dateisystem-Fragmentierungen kopiert. Die Syntax ist, wie bei den anderen Tool, simpel:

sudo asr -source / -target /Volumes/Backup -erase -noprompt

Das “-erase” argument ist optional, aber sehr zu empfehlen. Zwei Kopien auf dem gleichen Ziel zusammenzuführen bringt selten gute Ergebnisse, daher sollte das Zielvolume vorher gelöscht werden.
Für eine Blockbasierte Kopie müssen sowohl Quelle als auch Ziel unmounted werden, was bei der Systempartition eines laufenden Betriebsystems nicht möglich ist, zumindest nicht bei OS X, Windows oder Linux.

Kommentieren

Sie müssen angemeldet sein, um kommentieren zu können.