Der erste Schritt zu umfassenden Backups ist, sich zu überlegen, wo die Datensicherungen liegen sollen. Meist wird es dazu einen eigenen Backup-Server geben, der sich zu anderen Rechnern verbindet und die Sicherungen anstößt. Bei sicherheitsbewussten Administratoren schrillen hier die Alarm-Glocken – der Backup-Server darf sich zu allen anderen Maschinen verbinden! Der Absicherung des Backup-Servers als auch dessen Verbindungsschema müssen Sie deshalb volle Aufmerksamkeit schenken. Nicht zuletzt, da sich auf dem Backup-Server die Produktivdaten aller Systeme befinden.
Automatisierte Backups unter Linux setzen in der Regel auf einen Benutzer, der sich per Public-Key-Authentifizierung mit dem zu sichernden System verbindet. Zwei Aspekte sind hier hinsichtlich der Sicherheit als kritisch einzustufen. Erstens benötigt der Benutzer am Zielsystem Root-Rechte, um alle Daten zu sichern. Zweitens sind die privaten SSH-Schlüssel zur Automatisierung nicht passwortgeschützt. Über einfache Einschränkungen wirken Sie diesen Angriffspunkten entgegen:
1. Erstellen Sie für den Backup-Benutzer ein eigenes Schlüsselpaar und schränken Sie über »authorized_keys
«
auf den zu sichernden Systemen die erlaubten Kommandos ein.
2. Legen Sie für den Backup-Benutzer eine sudo-Konfiguration an, die nur das Backup-Programm (rdiff-backup oder rsnapshot) ohne sudo-Passworteingabe erlaubt.
Eine detaillierte Anweisung, wie Sie diese Maßnahmen umsetzen, finden Sie am Ende im Abschnitt Backups über SSH.
Die beiden Kommandozeilen-Werkzeuge rdiff-backup und rsnapshot sind bekannte Vertreter von Backup-Programmen unter Linux. Beide bestechen nach ihrer initialen Konfiguration durch Einfachheit und Zuverlässigkeit. Tabelle 1 zeigt die wichtigsten Funktionen der beiden Tools und gibt erste Hinweise über Sicherungskonzepte.
Rdiff-backup speichert, wie der Name vermuten lässt, den Unterschied von aktuellen Daten zu älteren Ständen als Reverse Diff. Ändert sich eine Datei, werden bei einer Sicherung nur die Änderungen zur vorhergehenden Version abgelegt. Der aktuelle Datenstand, Mirror genannt, lässt sich direkt verwenden. Ältere Versionen werden aus den Diffs berechnet.
Einen anderen Weg schlägt rsnapshot ein. Ändert sich eine Datei über zwei Snap-shots hinweg nicht, erstellt es einfach einen weiteren Hard-Link auf die Datei. Gleiche Dateien verbrauchen dann keinen unnötigen Speicherplatz. Die Diff-Berechnung wie bei rdiff-backup gibt es nicht. Ändert sich eine Datei, ist sie im nächsten Snapshot komplett vorhanden.
Sicherungen mit »rdiff-backup
«
werden anhand von Quell- und Zielverzeichnis erstellt. Das folgende Beispiel sichert das »etc
«
-Verzeichnis nach »/mnt/backup
«
:
# rdiff-backup /etc /mnt/backup
# ls /mnt/backup/hosts
/mnt/backup/hosts
Die Schrägstriche am Ende der Verzeichnisse – auch "Trailing Slashes" genannt – werden ignoriert. Es ist hier egal, ob Sie sie angeben oder nicht. Bei rsnapshot müssen Sie dagegen in der Datei »rsnapshot.conf
«
zwingend die Trailing Slashes verwenden. Das obige Beispiel zeigt auch, dass sich die Dateien direkt unter »/mnt/ backup
«
befinden – »/etc/hosts
«
wurde nach »/mnt/backup/hosts
«
gesichert. Für Unterverzeichnisse müssen Sie selbst sorgen.
Die wesentlichen Unterschiede zwischen rdiff-backup und rsnapshot |
||
|
rdiff-backup |
rsnapshot |
Programmiersprache |
Hauptsächlich Python. |
Komplett in Perl. |
Datenübertragung |
Beide setzen bei der Datenübertragung auf rsync. rdiff-backup verwendet die librsync, rsnapshot direkt das rsync Kommando. |
|
Datenspeicherung |
Ältere Stände sind als Increments beziehungsweise Deltas zum aktuellen Stand gespeichert. |
Dateien, die sich nicht ändern, werden als Hard-Links über Snapshots hinweg abgelegt. |
Datenzugang |
Der letzte Datenstand (Mirror) ist direkt zugänglich, ältere Stände über Increments wiederherstellbar. |
Alle Daten der Snaphots sind direkt zugänglich. |
Entfernen von Backups |
Backups werden über entfernt, also Stände, die älter als ein gewisser Zeitpunkt sind. |
Backups laufen in gewissen Abständen, zum Beispiel täglich oder wöchentlich. Retain regelt, wieviele Snapshots eines Zeitpunkts aufgehoben werden. |
Eine Fortschrittsanzeige während der Sicherung bietet rdiff-backup nicht. Wer dennoch gerne wissen möchte, was gerade gesichert wird, bedient sich der Verbose Levels. Das Level 5 zeigt an, wenn eine Datei sich geändert hat, unter Level 6 wird hingegen jede verarbeitete Datei aufgelistet:
# rdiff-backup -v5 /etc/ /mnt/backup
[…]
Incrementing mirror file /mnt/backup
Processing changed file X11
Incrementing mirror file /mnt/backup/X11
Processing changed file X11/Xreset
[...]
Praktisch ist ebenfalls die "--compare"-Funktion. Sie führt eine Art Probelauf durch und listet die Dateien auf, die sich geändert haben. Dadurch wissen Sie schon im Vorfeld über die Daten Bescheid, die gesichert werden würden:
# rdiff-backup --compare /etc/ /mnt/backup
changed: .
changed: hosts
changed: mtab
Für eine weitere Sicherung führen Sie denselben Befehl erneut aus. Fortlaufende Sicherungen haben den Vorteil, dass Sie auf die unterschiedlichen Datenstände der Sicherungszeitpunkte zugreifen können.
# rdiff-backup /etc /mnt/backup
# rdiff-backup --list-increments /mnt/backup/
Found 2 increments:
increments.2015-03- 15T09:15: 19+01:00.dir Sun Mar 15 09:15:19 2015
increments.2015-03-19T20:15: 46+01:00.dir Thu Mar 19 20:15:46 2015
Current mirror: Sat Mar 21 08:43:49 2015
Die Option "--list-increments" zeigt an, wie viele Sicherungen zu welchen Zeitpunkten vorhanden sind. Der aktuellste Stand ist in der Zeile "Current Mirror" angeführt, die Daten zu diesem Zeitpunkt sind als normale Dateien zugänglich.
Metadaten und jene der Increments beziehungsweise der Diffs befinden sich im Verzeichnis »rdiff-backup-data
«
. Es ist mindestens genau so wichtig wie die restlichen Daten des Backups. Immerhin sind die Increments dafür verantwortlich, dass Daten von vergangenen Sicherungen wiederhergestellt werden können. Sie müssen sich daher auch Gedanken über ein Backup Ihrer Sicherungen machen. Gibt das Backup- System den Geist auf oder geht bei rdiff-backup etwas schief, darf das nicht zum Super-GAU werden.