Eins der tollen neuen Features von Mac OS X Leopard war bzw ist TimeMachine,
ein kleines Backupprogramm, was im Hintergrund stündlich die eigenen
Daten sichert. Hierfür benötigt es entweder eine externe Festplatte oder
Time Capsule, die WLAN Festplatte von Apple. Da ich eine externe
Festplatte an Notebooks nicht mag und eine Time Capsule dann doch ein
wenig ins Geld geht, habe ich mich damals, beim Kauf meines Macbooks für
die Open Source Zwischenlösung entschieden: Externe Festplatte an den
Server anklemmen, diese ins WLAN freigeben und den geheimen
TimeMachine-Schalter für “Unsupported Network Storages” aktiviert.
Das ganze lief auch ein halbes Jahr gut; bis plötzlich das Backup anfing
ewig zu dauern, nie fertig wurde und schlussendlich mit Fehlern über ein
kaputtes Backuparchiv zu Bruch ging. Fazit für mich: TimeMachine über
ein nicht IEEE
802.11n Wlan bzw auf einer Nicht-Time-Capsule geht über kurz oder
lang schief. TimeMachine braucht ewig um mit dem Backup anzufangen und
dass ist für mich K.O. Kriterium für diese Lösung.
Da mein Macbook dann in den letzten 2 Wochen auch noch mit einer 100%
CPU Auslastung angefangen hatte die Festplatte nach Fehlern zu
durchsuchen (anscheinend war der Header kaputt), musste ich das gute
Stück wohl oder übel nun doch mal neuinstallieren. Aber vorher braucht
man ja ein Backup der eigenen Daten. Ich hatte vorher schon nach
Alternativen zu TimeMachine geschaut und bin über das Unix-Boardmittel rsync
gestolpert: Ein kleines Kommandozeilentool welches Daten zwischen zwei
Systemen synchronisiert.
Vorteile gegenüber TimeMachine:
- OpenSource: Die Lösung kann ich auch für meine anderen PCs verwenden
- Ich hab mehr Kontrolle darüber
- Auf dem Server werden blanke Dateien abgelegt, d.h. ich komme auch
ohne Mac an die Daten ran
Nachteile:
- Keine schicke GUI
- Bastellösung
- Man muss selbst Cronjobs anlegen usw.
- Eventuell fehlerhafte Synchronisation bei Apple / HFS-Eigenheiten
- Kein Restore bei Systeminstallation direkt vom Backup (Also erst
Installieren, dann Backup kopieren)
Da ich wie gesagt mein Macbook neuinstalliert habe, konnte ich das so
erzeugte Backup auch gleich mal testen. Probleme gab es eigentlich
keine, außer jede Menge fehlender Programme, da ich nur meinen
Benutzerordner gesichert habe (Tipp: Im Benutzerordner einen Ordner
“Applications” anlegen und dort die Programme speichern). Wer das ganze
bei sich ausprobieren will, findet mein Script hier:
#!/bin/sh
# This script does personal backups to a rsync backup server. You will end up
# with a 7 day rotating incremental backup. The incrementals will go
# into subdirectories named after the day of the week, and the current
# full backup goes into a directory called "current"
# tridge-at-linuxcare.com
# Modified for my personal Mac use
# stephan.zeissler-AT-moinz.de
# directory to backup
BDIR=$HOME
# excludes file - this contains a wildcard pattern per line of files to exclude
EXCLUDES=$HOME/.cron_excludes
# the name of the backup machine
BSERVER=szeiss2s@moon:/export/backupdb/szeiss2s
########################################################################
BACKUPDIR=`date +%A`
RSH_CMD="ssh -i $HOME/.ssh/id_rsa_backup"
OPTS="-x -S --force --ignore-errors --delete-excluded --exclude-from=$EXCLUDES --delete --backup --backup-dir=/export/backupdb/szeiss2s/$BACKUPDIR -a"
export PATH=$PATH:/bin:/usr/bin:/usr/local/bin
if [ ! -f /tmp/.rsync-backup ]; then
touch /tmp/.rsync-backup
# the following line clears the last weeks incremental directory
[ -d $HOME/emptydir ] || mkdir $HOME/emptydir
rsync -e "$RSH_CMD" --delete -a $HOME/emptydir/ $BSERVER/$BACKUPDIR/
rmdir $HOME/emptydir
# now the actual transfer
growlnotify -n "Rsync" "Backup" -m "Starting backup ..." -p -1
rsync -e "$RSH_CMD" $* $OPTS $BDIR $BSERVER/current
# Clear the log
growlnotify -n "Rsync" "Backup" -m "Backup beendet." -p 1
rm -f /tmp/.rsync-backup
else
# Backup seems to be already running.
growlnotify -n "Rsync" "Backup" -s -m "Already running - Aborting." -p 2
echo "Found /tmp/.rsync-backup so aborting - delete the file if the backup is not running."
fi
P.S.: Der Befehl growlnotify zeigt ein kleines Notifier-Fenster an und
muss erst
P.S.S.: Nein, das Skript ist nicht einfach so nutzbar, aber ich denke
der schlaue User wird das von selbst hinkriegen. Ansonsten gibts ja noch
Email.