Linux als SOHO-Server
für Linux- und Windows-Clients |
Kapitel:
|
Auf dieser Seite werden drei ausgesuchte fertige Backup-Lösungen unter Linux exemplarisch vorgestellt. Alle vorgestellten Tools können auf Systemen ohne grafischer Oberflache, also auf Shell-Ebene, betreiben werden. Auch haben die einzelnen Tools schon eine Backup-Strategie wie inkrementelles Sichern oder rotieren von Sicherungen mit implementiert, so dass dem Benutzer viel Arbeit beim Einsatz der Tools abgenommen wird. Durch entsprechende Konfiguration, die relativ einfach zu handhaben ist, können so leistungsstarke Lösungen für kleine und mittlere große Netzwerke realisiert werden. Auch basieren die vorgestellten fertigen Lösungen auf Standart-Mechanismen, wie 'rsync'. rsnapshot'rsnapschot' ist ein einfach zu handhabendes Tool, zur umfangreichen Sicherung lokalen oder entfernten Daten im Netzwerk. Es basiert auf den Tool 'rsync' in Kombination mit SSH zur Übertragung im Netzwerk. 'rsnapshot' überprüft dabei selbstständig, welche Dateien neu hinzu gekommen sind oder entfernt wurden, die Sicherung wird dabei inkrementell unter Anwendung von 'Hardlinks' abgelegt, der Speicherverbrauch auf dem Sicherungs-System wird so drastisch minimiert. Die erstellten Sicherungen werden konfigurierbar in Tages- Wochen- und Monats-Intervallen rotiert, so dass auch eine gewisse Historie der Daten erzielt wird. Unter Debian kann 'rsnapshot' einfach mit 'apt-get install rsnapshot' installiert werden, wie gewohnt unter Debian, werden alle Abhängigkeiten automatisch aufgelöst. Nach der Installation befindet sich die Konfigurationsdatei unter: '/etc/rsnapshot.conf'. Die Konfigurationsdatei ist auch schon quasi für Backup-Lösung vorkonfiguriert und vor allem gut dokumentiert; es brauchen nur wenige Parameter für eine eigene individuelle Lösung angepasst werden. Im Folgenden wird eine Beispiel einer Sicherung mit 'rsnapshot' aufgezeigt, wobei der lokale Rechner 'localhost' (FQDN: 'debian.eusterholz.tld') und ein entfernter Rechner im Netz, in diesem Beispiel der Rechner 'meridian' (FQDN: 'meridian.eusterholz.tld'), gesichert werden soll. Bei beiden Rechnern sollen jeweils die Verzeichnisse '/home', '/etc' und '/usr/local' komplett inklusiver aller Unterverzeichnisse gesichert werden. Hier die notwendigen Einträge in der Datei: '/etc/rsnapshot.conf' für eine minimale Konfiguration:
Die aufgeführte Beispiel-Konfigurationsdatei handelt es sich um eine gekürzte und angepasste Version basierend auf der 'default'-Konfigurationsdatei. Es werden auch nur die wichtigsten Einstellungen für die individuelle Realisierung einer Datensicherung kurz erklärt: Mit dem Parameter 'snapshot_root' wird angegeben, wo die Backups
gespeichert werden. Nach der Konfiguration, kann ein erster Test auf der Kommandozeile probiert werden, z.B. mit:
Die Option '-V'
veranlasst dabei, dass
während der Sicherung alle Details mit ausgegeben werden (verbose). Der erste
Sicherungslauf kann, je nachdem wie viel zu sichern ist, etwas länger dauern. Ein erneuter Aufruf von 'rsnapshot' sollte nun schneller gehen,
da nun eine inkrementelle Sicherung durchgeführt wird. Dabei wird ein neues
Verzeichnis 'daily.1' angelegt, in den
sich der Schnappschuss der vorherigen Sicherung befindet. Im 'daily.0'-Verzeichnis
befindet sich immer der zuletzt gesicherte(aktuellste) Stand. Analog gilt das gleiche für die wöchentliche und monatliche Sicherung, die mit 'rsnapshot weekly' bzw. 'rsnapschot monthly' eingeleitet werden kann. Wenn alles funktioniert, können die einzelnen Aufträge als 'Cronjob' realisiert werden; auch hierzu ein Beispiel:
In diesem Beispiel wird die tägliche Sicherung um '00:05' durchgeführt, die wöchentliche Sicherung um '00:15' Uhr immer Montags und die monatliche Sicherung jeweils am ersten tag des Monats um '00:25' Uhr. Es entstehen jetzt im Backup-Verzeichnis 7 tägliche, 4 wöchentliche und 12 monatliche Verzeichnisse mit den Sicherungen. Unter Debian ist bei der Installation von 'rsnapshot' bereits eine Beispieldatei '/etc/cron.d/rsnapshot/rsnapshot' angelegt worden. Alternativ kann diese Datei dazu genutzt werden, um die Zeiten für Backups festzulegen. Die entsprechenden Einträge müssen auskommentiert werden und die Zeiten angepasst werden. Weitere Beschreibungen und Beispiele können in der Dokumentation bzw. den Manualseiten zu 'rsnapshot' nachgelesen werden. dirvishÄhnlich wie 'rsnapshot' ist auch das Tool 'dirvish', jedoch ist es etwas schwieriger einzurichten und zu verstehen, dafür bietet es jedoch mehr Flexibilität bei der Definition von Backup-Strategien. Unter Debian kann 'dirvish' mittels 'apt-get install dirvish' nachgerüstet werden. Bevor es nun an die Konfiguration geht, sollte man sich über einige Fachbegriffe bezüglich 'dirvish' im Klaren sein. Im Zusammenhang mit 'dirvish' ist die Rede von so genannte 'Banks' und 'Vaults'. Eine 'Bank' ist sozusagen das Ziel, wohin die Backups gespeichert werden, z.B. kann eine 'Bank' das Backup-Medium in Form eines Zielverzeichnisses wie '/backup' sein. Ein 'Vault' (englisch: Tresor) bezeichnet einen Bereich, der in der 'Bank' gesichert wird, es ist typischerweise ein Unterverzeichnis in einer 'Bank'. In Folgenden wird die Konfiguration anhand eines kleines exemplarisches Beispiel dargestellt. Dabei soll von einen entfernten Rechner (FQDN: 'meridian.eusterholz.tld') remote über SSH das Verzeichnis '/home/' inklusive aller Unterverzeichnisse gesichert werden. Die Sicherung soll dabei zyklisch mit einer Historie erfolgen. Als Voraussetzung ist ein SSH-Zugang ohne Passwort-Abfrage vom Sicherungs-System zum Remote-System einzurichten (siehe Kapitel: 'SSH'). Für die Konfiguration ist zunächst die Hauptkonfigurationsdatei '/etc/dirvish/master.conf' zu erstellen, eine Vorlage hierfür kann unter '/usr/share/doc/dirvish/examples/' gefunden werden. Hier nun zum Beispiel:
Als erstes wird die 'Bank' eingerichtet, als das Verzeichnis, in
das die zu sichernden Dateien abgelegt werden sollen (hier grün markiert: '/MyBackup'). Die Konfiguration der 'Vaults' erfolgt durch Konfigurationsdateien unterhalb der in der 'master.conf' definierten Bank. Dazu ist in der Bank ein Unterverzeichnis für den 'Vault', sowie darin enthalten ein Verzeichnis 'dirvish' anlegen. Bezogen auf das Beispiel heißt dass:
In dem erstellten Verzeichnis wird dann eine Datei 'default.conf' benötigt, in der die Einstellungen für den 'Vault' eingetragen werden, bezogen auf das vorgestellte Beispiel kann die Datei wie folgt aussehen:
Als Client ist unter 'client:'
der Name des zu sichernden Clients einzutragen. Nachdem die Konfiguration abgeschlossen ist, sollte ein erstmaliger Abgleich per Hand vorgenommen werde, z.B. mit:
Abhängig von der Größe des 'Vault', kann es einige Zeit dauern. Für weitere 'Vaults' sollte der Vorgang entsprechend wiederholt werden. Nach Abschluss des ersten Backups sollte nun unter 'Bank' und 'Vault' ein neues Verzeichnis als Zeitstempel der Sicherung (grüne Markierung) erstellt sein:
Innerhalb des neu erstellten Verzeichnisses sollten sich die Log-Dateien wie 'index.gz', 'log.gz' und 'summary' befinden. Die eigentliche Sicherung ist unter dem Verzeichnis 'tree' (gelbe Markierung) zu finden. Zum Schluss muss noch sichergestellt werden, das 'dirvish' regelmäßig neue Sicherungen erstellt und die alten löscht. Bei Debian erledigt das die 'cron'-Datei: '/etc/cron.d/dirvish', die jede Nacht das Skript: '/etc/dirvish/dirvish-cronjob' aktiviert. Dort werden standardmäßig die Skripte: 'dirvish-runall' und 'dirvish-expire' aufgerufen. Spezielle Konfiguration und Einstellungen können in der Dokumentation zu 'dirvish' nachgelesen werden. rdiff-backup'rdiff-backup' ist ein
weiteres Tool das unter Unix/Linux zur Datensicherung lokal und über ein
Netzwerk eingesetzt werden kann. Es ist unter Python realisiert und hat den 'rsync'-Algorithmus
implementiert, auch ist das Abspeichern von historischen Versionen gegeben. Die
Übertragung im Netzwerk findet ebenfalls wie bei den zuvor vorgestellten Tools
auch über das SSH-Protokoll statt. Vereinfacht gesagt verwendet 'rdiff-backup'
folgende Syntax: 'rdiff-backup
<QUELL-VERZEICHNIS> <ZIEL-VERZEICHNIS>', prinzipiell wie beim 'cp'-Kommando
auch.
Es wird das Verzeichnis '/etc'
inklusiv aller Unterverzeichnisse in das Verzeichnis '/Backup_1'
gesichert. Falls das Verzeichnis '/Backup_1'
noch nicht existiert so wird es angelegt.
In diesem Beispiel wird das Verzeichnis '/home' inklusiv aller Unterverzeichnisse vom Rechner 'meridian' als Benutzer 'root' in das Verzeichnis '/BACKUP_2' gesichert. Wie bei den andern Backup-Tools auch, die auf dieser Seite vorgestellt wurden, muss ein SSH-Zugang ohne Passwort gegeben sein. Wird das 'rdiff-backup'-Kommando wie oben, zu einen späteren Zeitpunkt nochmals aufgerufen, so werden nur die Änderungen berücksichtigt. In den Verzeichnissen '/BACKUP_1'
bzw. '/BACKUP_2' befindet sich der
komplette Stand der letzten Sicherung, zusätzlich wird ein Verzeichnis 'rdiff-backup-data/'
angelegt, in dem sich Informationen zu jeder Backup-Session befinden. Die
Informationen in den einzelnen, zum Teil gepackten Dateien, beinhalten
beispielsweise wie viele neue Files dazugekommen sind, wie viele gelöscht
wurden, wie viele MB übertragen wurden. Mit folgenden Kommando kann man sich die inkrementellen Sicherungen und deren Daten anzeigen lassen:
Um nun einen Stand wieder herzustellen, wie er zu einen Zeitpunkt ursprünglich war ist 'rdiff-backup' wie folgt anzuwenden: 'rdiff-backup -r <Zeitpunkt> <QUELL-VERZEICHNIS> <ZIEL-VERZEICHNIS>'. Die Option '-r' (restore) steht für das wiederherstellen, dahinter muss ein Zeitpunkt von wann wieder hergestellt werden soll angegeben werden. Bezogen auf das Beispiel kann ein 'Restore' wie folgt aussehen:
Die Option '-r now' bedeutet, dass der Stand der letzten Sicherung, zum Wiederherstellen genommen wird. Alternativ können auch andere Zeiträume angegeben werden, z.B. die Angabe '-r 5D' berücksichtigt die Sicherung wie Sie vor fünf Tagen war. Weitere Möglichkeiten der Zeitangabe können der Manualseite zu 'rdiff-backup' entnommen werden. Sinnig ist es natürlich Backups zyklisch auszuführen, hierzu kann das Kommando einfach als 'cron'-Job eingetragen werden:
In diesem Beispiel wird eine Sicherung mit 'rdiff-backup' jeden Tag um 2:00 Uhr ausgeführt. 'rdiff-backup' verfügt über sehr viele nützliche Optionen, wie z.B. das Ausklammern bestimmter Dateien anhand von Listen oder Ausgabe von Informationen bezüglich der Inkremente. Weitere Informationen kann der Manualseite bzw. die Homepage zu 'rdiff-backup' entnommen werden AnmerkungenBei allen vorgestellten Mechanismen müssen auf beiden Seiten (Server und Client) die Pakete 'ssh' und 'rsync' installiert sein. Bei Unix-Dateisystemen ist ein Dateiname nur ein Verzeichniseintrag, der in einem Verzeichnis gespeichert ist. Neben diesem Namen ist immer auch ein Verweis auf die 'Inode' gespeichert, die dann die eigentlichen Eigenschaften (Eigentümer, Gruppenmitgliedschaft, Zugriffsrechte, usw.) der Datei und ihre physikalischen Speicheradressen auf der Platte enthält. Bei einen so genannten 'Hardlink' handelt es sich um einen neuen Verzeichniseintrag auf eine schon bestehenden 'Inode'. Genau genommen ist es ein zweiter Dateinamen für eine Datei. Da die Zugriffsrechte, Eigentümer usw. in der 'Inode' stehen, haben alle 'Hardlinks' einer Datei die selben solchen Attribute. Auch können die auf dieser Seite vorgestellten Tools zum Teil dazu genutzt werden ein Windows System zu sichern, dazu ist dann 'Cygwin' mit den entsprechenden Komponenten zu installieren. Weitere Infos
letzte Änderung: 08. Mai 2009 |
Copyright © 2004 Norbert Eusterholz |