Tipps zu rsync unter Mac OS X

Früher war ja bekanntlich alles besser, zumindest war es zu Mac OS 8/9 Zeiten einfach, ein Backup zu Erstellen – entweder mit dem prof. Backupprogramm Retrospect oder einfach per Hand auf eine andere Festplatte – sogar der Systemordner überstand das und man konnte ohne Probleme mit der anderen Festplatte dann hochfahren.Mit Mac OS X wurde die Thematik deutlich komplizierter, auch wenn auf Websites wie Macupdate.com weit über 30 Backupprogramme aufgelistet werden, so wirklich perfekt funktionieren nur ganz wenige, wie Maurits in aufwändigen Tests feststellen musste. Schuld daran haben bei manchen Backup-Programmen die seit dem Mac OS X-Zeitalter erstmals auftauchenden Zugriffsberechtigungen und auch bei den Metadaten und Resscourceforks gibt es für Backup-Programme einiges zu beachten – von durch “drag and drop”-bootbaren Festplatten ganz zu schweigen.Kurz gesagt, wenn man einfach von lokaler Festplatte zu lokaler Festplatte backupen möchte (und keine “fancy” Dinge wie inkrementell benötigt), verwendet man am besten das Programm SuperDuper. Dieses kann mit sämtlichen Metadaten umgehen, zudem hatte ich in der Praxis bis jetzt noch nie Stabilitätsprobleme mit diesem Programm, was ich zB. von Silverkeeper, DataBackup oder DejaVue nicht behaupten kann.Über Netzwerk würde ich rsync empfehlen. Dieses ist mit dem 10.4.9 Update von Apple deutlich verbessert worden (genaueres kann man bei afp548.com nachlesen) und funktioniert bei meinen Kunden wirklich trouble-free.Ich möchte mit diesem Eintrag nun nicht extrem detailliert alles durchgehen, sondern Webseiten präsentieren, durch die ich relativ rasch rsync erlernt habe.Vorher noch kurz zum Überblick, was wir durchgehen werden

  • die wichtisten Befehle der rsync-Syntax kennen lernen
  • ssh mit public-key nutzen, um ohne Angabe von Passwörtern auf andere Rechner zugreifen zu können
  • die Skript-Sammlung rsyncBackup verwenden, um rsync bedienerfreundlicher zu machen
  • abschließend einen cron-Job einrichten, damit Backups automatisiert durchgeführt werden

1. rsync SyntaxAls erstes sollte man sich einmal vertraut machen mit dem Befehlssatz, den rsync verwendet. Dazu hat der Betreiber des Blogs “The Advantures of Systems Boy!” eine sehr gute Einführung geschrieben, hier zu finden. Benötigt man, um sich dann besser in “rsyncBackup” zurecht zu finden.2. ssh public-key aktivierenDas im nächsten Punkt vorgestellte rsyncBackup hat zwar selbst ein Skript eingebaut, um ein passwortfreies Verbinden über ssh zu ermöglichen, allerdings funktionierte bei mir das Einrichten nie zufriedenstellend. Schließlich fand ich eine Anleitung von Mike Bombich, die zum einen leicht verständlich ist und mir zudem auch zeigt, wie man als root-User Passwort-frei einsteigen kann – etwas, was man bei rsyncBackup über Netzwerk zwingend benötigt.Hier nun kurz dargestellt die notwendigen Schritte, ausführlicher erklärt wird es beim oben genannten Link: ssh-keygen -t dsa -C “ffuchs-pbg4“

  • ich verwende gerne zusätzlich die Option “-C”, da ich so später bei mehreren public-keys besser den Überblick behalten kann (in meinem Fall Kurzname plus einer Abkürzung des Rechners, den ich verwende – ich könnte ja auch mehrere Rechner besitzen)
  • den Vorschlag bez. Speicherort einfach mit “Enter” bestätigen
  • nochmals 2mal “Enter”, da wir kein Passwort verwenden wollen
  • auf dem “Quell”-Rechner (= jener Rechner, der dann ohne Passwort auf einen anderen Rechner zugreifen können soll) ausführen, erzeugt zwei Files – id_dsa (private key file) und id_dsa.pub (das public key file)

cp id_dsa.pub authorized_keys2

kopiert den Inhalt meines public-keys in die Datei “authorized_keys2”

scp authorized_keys2 sb@192.168.0.103:~/.ssh/

kopiert die Datei authorized_keys2 mit meinem public-key direkt in das .ssh-Verzeichnis des Benutzers “sb” eines Rechners mit der IP-Adresse 192.168.0.103

ssh sb@192.168.0.103

Test – jetzt sollte die automatische Verbindung zum Benutzer “sb” klappen – ohne Angabe von Passwörtern

Da es bei einem Backup von Serverdaten besser ist, mit root zu arbeiten (um ganz sicher zu gehen, dass wirklich alles kopiert wird), muss man nun auch dem root-User vom Rechner mit der IP 192.168.0.103 die authorized_keys2 Datei geben: scp authorized_keys2 root@192.168.0.103:/var/root/.ssh/

die Datei wird in das Verzeichnis /var/root/.ssh abgelegt, damit der root-User sie erkennt

3. rsyncBackup installierenAchtung: Mac OS X 10.4 User sollten auf zumindest Mac OS X 10.4.9 updaten, da erst mit dieser Version rsync wirklich gut mit resource forks und meta-Daten umgehen kann. Das in der rsyncBackup-Dokumentation erwähnte “RsyncX 2.1” NICHT installieren. Anders sieht es für Mac OS X 10.3 User, diese sollten sehr wohl “RsyncX 2.1” installieren.Mit folgenden Befehlen kann man im Terminal überprüfen, welches rsync verwendet wirdwhich rsync

zeigt den Pfad zum aktiven rsync an, bei mir zB. /usr/local/bin/rsync

rsync --version

zeigt Versionsnummer von rsync an – bei mir unter Mac OS X 10.4.10 ist es rsync-24.1 (based on rsync 2.6.3)

Nach dem Runterladen von rsyncBackup die Online-Dokumentation durchlesen, hier zu finden.Warum rsyncBackup verwenden, wenn ich nun die rsync-Syntax sowieso kann?

Das Konzept der getrennten Konfigurationsfiles (separate Dateien für Quellen, Ziele, generelle Konfiguration) macht es einfacher, den Überblick zu behalten, vor allem bei einem zeitlichen Abstand zur Erstkonfiguration, wenn man nachträglich erweitern oder ausbessern muss. Weiters kann man sich leicht merkende Namen für die Backupsets aussuchen, was einem hilft, wenn man sie manuell starten möchte (zB. bei einem Kunden kopiert rsync vom 1. Raid auf externe Festplatten, um den Backupvorgang manuell zu Starten, gebe ich einfach sudo rsyncbackup -b -s xraid1go ein – um die genaue rsync-Konfiguration kümmert sich nun rsyncBackup, wie Verbindungsaufbau über ssh, korrekte Syntax für ausgeschlossene Ordner, usw.).

Tipp: woran ich anfangs scheiterte, war die Angabe von Ordnern, die rsync nicht backupen soll. Ich probierte div. relative und statische Ordnerpfade aus, aber rsync weigerte sich beharrlich, die gewünschten Orner zu übergehen. Wie so oft bei Unix war die Lösung, sobald man sie hatte, einfach und einleuchtend: rsync geht immer von dem Ort aus, wo der Ursprungsordner sich befindet.Beispiel:Bei folgenden Ordnerpfad soll alles ab “Daten” und tiefer gebackuped werden:Festplatte / xraid1 / group1 / Daten folgenden Ordner möchte ich aber nicht backupen:Festplatte / xraid1 / group1 / Daten / grafiker / tmp-dateien das muss ich in das Konfigurationsfile “config.conf” folgendermaßen eintragen:--exclude “grafiker/tmp-dateien“ 4. cronjob einrichtenDa ich nach 7 Jahren Mac OS X noch immer keine Lust habe, mir crontab -e, verwende ich bei cron-Setups ein Konfigurationsfile, dass ich bequem mit nanu erstelle und dann mittels crontab -l einspiele.Kurz gesagt besteht ein cron-Job aus einer Zeile, mit 4 Spalten für Zeitangaben und einer Spalte für den Befehl, detaillierter wird cron von Apple und den tech-geeks erklärt.Um mein vorher erwähntes rsyncBackup-Skrip mittels cron zu automatisieren, erstelle ich mit nanu eine Datei mit folgendem Inhalt:0 23 * * * /usr/local/sbin/rsyncbackup -b -s xraid1go

Bedeutung: um genau 23:00 Uhr, jeden Tag und jede Woche Backup durchführen

die oben genannte Zeile mit nano in ein leeres Textfile einsetzen und abspeichern (NICHT Textedit dazu verwenden), zb. mit dem Namen crontabbackupnun mit folgendem Befehl den Job crontab mitteilen:crontab crontabbackup ob Skript nun korrekt eingetragen ist, kann man überprüfen mitcrontab -l einen Schönheitsfehler hat das ganze noch – der Befehl wird zwar als Administrator ausgeführt, allerdings sollte man root verwenden. dazu nicht wie oben beschrieben einfach crontab crontabbackup verwenden, sondern sudo noch davor schreibensudo crontab crontabbackup

so wird der Job dem cron-Dienst des root-Users hinzufügt und als solcher dann auch ausgeführt

mini-faq

  • Warum nicht Retrospect, gibts doch seit ewigen Zeiten auf der Apple-Plattform?
Retrospect ist im “Zombie-”Stadium -> offiziell scheint es zu “leben”, aber in Wirklichkeit ist es tot. Man muss sich nur vor Augen halten, dass man Retrospect trotz ein paar kleinerer Updates nachwievor als “nicht im Mac OS X-Zeitalter” angekommen bezeichnen muss (sprich keine 100% Kompatibilität mit dem aktuellen Betriebssystem), was auch nicht verwunderlich ist wenn man bedenkt, dass der letzte große Updatesprung mit Retrospect 6 im Jahr 2004(!) stattfand, zudem hat der neue Eigentümer EMC viele Programmierer entlassen, hier nachzulesen.

  • wie sieht es mit ACL unter Mac OS X Server 10.4 aus?
weder rsync noch SuperDuper kann ACL-Rechte mitübernehmen, falls die Backup-Festplate in einem Notfall somit zum “Live-System” mutiert, müßte man diese vor der Freigabe neu setzen. Wenn man aber rechtzeitig genug dafür ein Shell-Script bastelt, bleibt die Downtime des Servers trotzdem relativ niedrig.

  • kann ich mit rsync zu einem Windows- oder Linux-Rechner backupen?
ja, geht, allerdings verliert man dabei sämtliche Metainformationen, somit nicht empfehlenswert

  • warum cron und nicht launchd?
zum einen weil es launchd nicht unter Mac OS X 10.3 gibt, zum anderen weil man mit cron (ich zumindest) deutlich schneller ist als mit launchd

  • wie siehts mit inkrementellen Backups aus?
rsync selbst kann sowieso inkrementelle Backups, die Skriptsammlung rsyncBackup ebenfalls – habe es aber bislang noch nicht ausprobiert. Einige Linux-Jünger schwören auf dirvish, das ebenfalls als Engine rsync verwendet.

Leave a comment

You must be logged in to post a comment.