mac | Einrichtung eines Backups

Nachdem ich jetzt doch vorgenommen habe meinen Blog aufzuhübschen, möchte hier noch mal meinen Artikel, den ich für macfidelity geschrieben habe, publizieren.

Das Problem

Ich habe einen iMac, welcher als Fernseher, Videorekorder, Musikbibliothek, Bücherdatenbank und als Email-Server (Windows-Server in einer VM) funktioniert. Aus diesem Grund ist der iMac rund um die Uhr an. Wenn so wichtige Daten auf dem Rechner liegen, dann bietet es sich an regelmäßig ein Backup zu machen. In meiner ursprünglichen Planung dachte ich mir: “He, OSX hat Time Machine mit dabei, da brauchst Du Dir um nix mehr Sorgen zu machen.” – Weit gefehlt!

  • Time Machine will alle Stunde ein Backup machen – warum auch immer?! Ok, das Problem kann man mit dem Time Machine Editor eingrenzen.
  • Für Time Machine ist die VM eine einzige Datei, welche sich natürlich immer verändert und deswegen immer wieder neu komplett weggeschrieben wird – da reicht die größte Backupplatte nicht!

Die Lösung

Zuerst möchte ich Time Machine davon überzeugen nur einmal in der Nacht ein Backup zu machen. Dazu verwende ich den Time Machine Editor. Dieses Programm gibt die Möglichkeit die fest eingestellten Zeiten für Time Machine von Apple zu editieren. Hier hat man die Möglichkeit entweder in einem festen Intervall

time-machine-editor-intervall

oder aber zu festgelegten Zeiten

time-machine-editor-calendar

Time Machine zu starten.

Das Problem mit den großen Backups der VM erschlage ich einfach damit, das ich den Ordner der VM vom Time Machine Backup ausschließe und das Backup von Windows selber machen lasse. Dazu habe ich auf meiner externen Festplatte einfach zwei Partitionen angelegt, eine Partition habe ich Time Machine zugeordnet, die andere “gehört” der VM. Es ist auch eine mit HFS formatierte Partition, die ich über VMWares Ordnerfreigabe der VM zugeordnet habe. Der Vorteil dabei ist, das für die VM diese Partition ein Netzlaufwerk ist, welches auch mal weg sein kann, ohne das Windows sich dran stört.

Der Zwischenstand

Somit sollte das alles laufen und ich glücklich sein: Leider nicht ganz. Ich muß zwar nicht mehr um den Speicherplatz meiner externen Festplatte bangen und die Backups werden auch schön in der Nacht gemacht. Aber leider fährt auch bei Nichtbenutzung aller ca. 10 Minuten die externe Festplatte hoch um nach ca. 10 Minuten wieder herunterzufahren – sehr unbefriedigend! Nicht nur, das es der Platte nicht sonderlich gut tut, es nervt auch rein geräuschtechnisch und etwas Strom verbraucht es auch!

Die Zwischenlösung

Da ich nicht herausfinden konnte, was die Platte immer wieder aufwecken läßt (Ein Abschalten der Spotlightindizierung auf dem Laufwerk brachte nicht das gewünschte Ergebnis), kam ich auf folgende Idee:

Warum nicht die Festplatte vorm dem Start des Backups mounten und danach wieder unmounten? Klingt doch ganz gut. Im Terminal ist das einfach gemacht:

diskutil mount /dev/disk2s2

damit kann man die Platte einbinden.

diskutil unmount /dev/disk2s2

und damit wieder ausbinden. (Fidel-Edit: disk2s2 trifft im Falle von makomi zu – das kann bei euch gleich sein – muss es aber nicht – Der Mount Befehl im Terminal sollte hier weiterhelfen)

Nun muß das Alles nur noch zeitgesteuert gestartet werden. Auch dafür hat OSX wieder mehrere Lösungen parat:

iCal

iCal bietet an, für eine Erinnerung ein Skript auszuführen:

ical-skript

crontab

Als eine Unix-afiner Mensch kenne ich natürlich cron. In OSX liegen die systemweiten Cron-Dateien unter /etc/periodic und dann in den jeweiligen Unterordnern daily, weekly, monthly. Jeder Benutzer kann sich auch ein eigenes crontab einrichten. Dies geht mit dem Befehl “crontab -e”. Aber warum die Kommandozeile bemühen, wenn es auch eine GUI dafür gibt: CronniX.

Das Programm ist sehr aufgeräumt und selbsterklärend:

cron-ubersicht

Die beiden Tasks sind schnell angelegt:

cron-mount

cron-unmount

launchd

Und schließlich gibt es Apples Verbesserung zu cron genannt launchd. Ich habe mich schon immer gefragt, was das eigentlich ist. Nun, die Erklärung ist recht einfach: Es ist die Ablösung von cron, da es nicht nur zeit- oder intervallgesteuert sondern auch ereignisgesteuert Aktionen ausführen kann.

Eine guten Überblick gibt dazu Apples Getting started with launchd. Es muß also ein preference file erstellt werden – ein xml. Bevor ich sowas händig im Texteditor selber baue, schau ich doch lieber nach, ob es nicht dafür schon ein kleines Programm gibt und siehe da: Die kurze Suche ergab Launchd Editor und Lingon. Während ersteres ein Sharewareprodukt ist (ok, 5$ ist nicht der Hit, aber das Programm wurde das letze Mal 2005 aktualisiert), ist zweiteres Opensource.

Lingon ist sehr übersichtlich.

lingon-startscreen

Wenn man einen neuen Task anlegen möchte, muß man sich entscheiden wann er aktiv werden soll:

lingon-auswahl

In meinem Fall möchte ich, das die Festplatte auch dann gemountet und wieder ausgeworfen wird, wenn keiner angemeldet ist, also wird es ein User Daemon:

Und so sehen die beiden Task aus:

lingon-mount

lingon-unmount

Also einfaches Erstellen eines Tasks in nur drei Schritten.

Klingt schon mal gut und als Zwischenlösung macht es genau das, was ich möchte.

Die Wünsche

Natürlich schreit das Ganze nach Optimierungen:

Nachdem die Platte eingebunden ist, könnte doch gleich Time Machine angestoßen werden um die Daten zu sichern. Aber wie ich Time Machine per Kommandozeile dazu überreden kann ein Backup zu machen habe ich noch nicht herausgefunden. Und wie kann ich Time Machine sagen, das nach erfolgtem Backup wiederrum ein Skript ausgeführt werden kann (nämlich das Unmounten der Festplatte)? Oder aber wie funktioniert das Skripting mit VMWare? Wie kann ich dort einen Befehl starten und nach Beenden des Befehls den Statuscode an ein Skript in OSX zurückgeben?

3 Gedanken zu „mac | Einrichtung eines Backups

  1. Pingback: makomi.de

  2. Pingback: mac | VMware Fusion über die Kommandozeile steuern | controlc.de

  3. Pingback: controlc.de» Blogarchiv » mac | launchd näher beleuchtet

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.