Das CLI-Tool Obnam erlaubt Backups und das Wiederherstellen selbst dann, wenn der X-Server streikt. Die Vielfalt an Option ermöglicht den Einsatz im heimischen Netz, aber auch im SOHO-Bereich.
Festplatten kennen nur drei grundlegende Zustände: leer, voll, kaputt. Zwischen den ersten beiden speichern sie mehr oder weniger wichtige Daten. Allerdings wechselt die Hardware oft schneller zu Zustand 3, als es einem lieb ist. Wer also nicht nach der Torvalds-Devise “Echte Männer brauchen keine Backups” lebt, benötigt über kurz oder lang eine geeignete Strategie und die dazu passende Software.
Die Auswahl der passenden Programme fällt groß aus [1]. Obnam hebt sich von der Masse durch eine Vielzahl an Optionen ab, die es in den meisten Fällen ermöglichen, eine optimale Sicherung zu erstellen. Das ausgezeichnete Tutorial [2] und die Manpage des Projekts [3] helfen bei Spezialfällen weiter.
Obnam stammt aus der Feder des finnischen Debian-Entwicklers und Linux-Urgesteins Lars Wirzenius. Er arbeitet seit 2006 an der Python-Software, die auf Wunsch Backups auf lokalen Festplatten, auf NFS- oder SMB-Shares oder auf entfernten Servern speichert, wozu sie das SFTP-Protokoll unterstützt.
Auf Nummer sicher
Die meisten Backup-Tools basieren auf den Algorithmen von Rsync [4]. Diese liefern eine der wichtigsten Eigenschaften, die eine Backup-Software bieten sollte: die inkrementelle Datensicherung. Dabei sichert die Software immer nur die Änderungen seit der letzten vollen oder inkrementellen Sicherung.
Allerdings macht diese Methode von Zeit zu Zeit eine komplette Sicherung der Daten notwendig. Das kostet Zeit und beim Transfer über das Internet zusätzlich Bandbreite. Beim Wiederherstellen erhöht sich bei dieser Methode ebenfalls der Aufwand, da die Daten sich meist aus mehreren einzelnen Sicherungen zusammensetzen. Die Alternative einer differenziellen Sicherung, die immer die Änderungen zur letzten komplett speichert, braucht dagegen mehr Speicherplatz.
Als Lars Wirzenius im Jahr 2006 einen Onlinedienst für Backups ins Leben rufen wollte, gefielen ihm diese Ansätze nicht, wie er in der Ankündigung zur stabilen Version 1.0 von Obnam im Jahr 2012 schrieb [5]. Er implementierte daher für Obnam die Funktion Copy-on-Write, kurz COW [6], die ebenfalls im Dateisystem BTRFS für die Snapshot-Funktion zum Einsatz kommt.
Das blockbasierte Vorgehen ermöglichte in Obnam die Snapshot-Funktion, die es von vielen anderen Backup-Systemen unterscheidet und in die Nähe von kommerziellen Produkten mit “Near-continuous Data Protection” (Near-CDP) rückt [7]. Dabei verwendet die Software bereits vorhandene identische Blöcke wieder, selbst wenn sie sich in einer anderen Datei oder einer älteren Sicherung befinden. Die Technik heißt Deduplikation [8]. Somit erscheint jede Sicherung von Obnam wie ein komplettes Backup, selbst wenn es sich von der Theorie her um ein inkrementelles Backup handelt.
In medias res
Was nach einem komplizierten Konzept klingt, vereinfacht sich in der Praxis durch Obnam, und zwar vor allem gerade dadurch, dass das Tool keine grafische Oberfläche mitbringt: Die wäre durch die vielen Optionen entweder total überladen oder unzureichend.
Dank der guten Dokumentation eignet sich das Programm für alltägliche Fälle. In weniger als einer halben Stunde haben Sie die Software in der Regel konfiguriert. Danach verrichtet sie ihre Arbeit auf Wunsch völlig automatisch zu festgelegten Zeiten. Parallel bietet Obnam aber die Möglichkeit, das Sichern sowie Wiederherstellen jederzeit über die Kommandozeile anzustoßen.
Die Installation der Applikation gestaltet sich unter Debian am einfachsten: Dazu genügt der simple Befehl:
# apt-get install obnam
Er kopiert weniger als 5 MByte Daten auf die Festplatte. Für Ubuntu, Gentoo und OpenSuse finden sich Pakete auf der Downloadseite, wo auch der Quellcode bereitsteht [9]. Für die allermeisten Szenarien fertigen Sie sinnvollerweise eine Konfigurationsdatei an. Dazu erstellen Sie als User mit dem Befehl touch ~/.obnam.conf im Home-Verzeichnis eine Textdatei. Listing 1 zeigt ein Beispiel für deren Inhalt.
Listing 1
[config] # Ablage für die Sicherungen repository=/media/Backup # Ablage für die Protokolldatei log = /home/Username/obnam.log # Log-Tiefe log-level = info # maximale Größe der Log-Datei log-max = 100 mb # Backup-Ausschlüsse (Endungen, Downloads-Ordner) exclude = .mp3$, .mp4$, .part$, .rar$, .nfo$, /Downloads$ # Auschluss aller Caches exclude-caches = yes # Ausschluss externer Dateisysteme (/proc, NFS, etc.) one-file-system = yes # behält ein Backup täglich für die letzten 14 Tage etc. keep = 14d,10w,12m # verschlüsselt die Sicherung mittels GnuPG encrypt-with = "Ihr Bezeichner"
TIPP
Zum Sichern des Root-Dateisystems oder von Teilen davon empfiehlt sich eine eigene Konfigurationsdatei, in der Sie zusätzlich eine Zeile wie root = /etc, /var einfügen, die in die jeweiligen Verzeichnisse sichert.
Erste Sicherung
Ein erstes manuelles Backup zum Sichern des gesamten Home-Verzeichnisses starten Sie über den folgenden Befehl:
$ obnam backup $HOME
Das setzt voraus, dass Sie das Ziel der Sicherung bereits eingebunden haben und sich in der Konsole in diesem Verzeichnis befinden. Alternativ geben Sie das Ziel der Sicherung im Befehl selbst über die Option -r an oder legen es in der Konfiguration fest.
Das nächste Backup, falls ebenfalls manuell angestoßen, starten Sie mittels des gleichen Befehls. Es sichert alle neuen und geänderten Dateien. Bei größeren Backups wie dem ersten kompletten Durchlauf besteht die Möglichkeit, dass die Verbindung abbricht – insbesondere, falls Sie per WLAN über das Internet auf einen Server gehen. Deshalb erstellt das Programm alle 100 MByte eine Marke und nimmt nach einem Abbruch bei dieser die Arbeit wieder auf.
Allerdings verrichtet Obnam seine Arbeit ohnehin ziemlich zügig. Im Test dauerte das Sichern eines Home-Verzeichnisses mit 61 GByte Daten auf eine externe Platte mit USB-3-Anschluss rund 37 Minuten. Nach Vollzug meldete sich die Software mit der Nachricht aus der ersten Zeile von Listing 2. Ein zweiter Lauf einige Tage später ergab die Meldung aus der zweiten Zeile – das Programm war also gut eine halbe Stunde schneller.
Listing 2
$ Backed up 98627 files (of 98628 found), uploaded 61.0 GiB in 37m18s at 28.1 MiB/s average speed $ Backed up 4633 files (of 101010 found), uploaded 3.0 GiB in 3m24s at 15.1 MiB/s average speed
Um zu kontrollieren, wie viele Backup-Generationen Sie bereits erzeugt beziehungsweise behalten haben, genügt die Eingabe von obnam generations. Listing 3 zeigt das Ergebnis zu den Backups aus Listing 2.
Listing 3
5543 2014-04-27 19:52:12 .. 2014-04-27 19:59:35 (98628 files, 69491282768 bytes) 6751 2014-05-01 09:42:39 .. 2014-05-01 09:43:20 (101010 files, 71257775259 bytes)
Teile und herrsche
In den seltensten Fällen kommt es jedoch vor, das Sie das gesamte Home-Verzeichnis sichern. Die Vorgehensweise bei der Auswahl oder dem Ausschluss von Dateien hängt davon ab, was sich schneller definieren lässt. Wollen Sie nur fünf Verzeichnisse sichern, so bietet es sich an, diese im Befehl zur Sicherung oder über die Konfiguration festzulegen.
Häufiger dürfte jedoch der Fall sein, dass Sie einzelne Verzeichnisse und Dateien vom Sichern ausschließen möchten. Das erreichen Sie über den Parameter --exclude, den Sie dem Tool entweder auf der Kommandozeile mitgeben oder – sinnvollerweise – direkt in die Konfiguration schreiben. Zusätzlich besteht die Möglichkeit, mit exclude-caches = yes alle temporären Speicher ebenso auszuschließen wie mittels one-file-system = yes extern eingehängte Dateisysteme oder das virtuelle Proc-Verzeichnis.
Wer seine Sicherungen im Internet ablegt, dem kommt die Option gelegen, Obnam die Backups mittels GnuPG verschlüsseln zu lassen. Das setzt voraus, dass Sie neben der Installation des Programms GnuPG-Agent respektive GPG-Agent (je nach Distribution) ein Schlüsselpaar erzeugen. Das erledigen Sie als User mit dem Befehl gpg --gen-key. Einen tieferen Einblick in die Möglichkeiten gewährt die Dokumentation von GnuPG [10].
Jeder Schlüssel hat einen Bezeichner, den die Software beim Erzeugen des Schlüssels als Kommentar abfragt. Dieser Bezeichner erscheint auch in der Liste, wenn Sie mit --list-keys die Informationen zu den gespeicherten Schlüsseln abrufen. Den Bezeichner geben Sie in der Konfiguration über die folgende Zeile an:
encrypt-with = "Bezeichner"
Mit diesem schlichten Eintrag ist die Verschlüsselung bereits fertig eingerichtet.
Im Ernstfall
Haben Sie Daten verloren und möchten diese nun wiederherstellen, bietet Obnam dazu zwei Wege. Der erste macht sich die Eigenschaften des FUSE-Dateisystems [11] zunutze, das auf modernen Linux-Systemen meist standardmäßig installiert ist. Der zweite, weit weniger komfortable Weg kommt zum Einsatz, wenn FUSE nicht bereitsteht.
Bei FUSE handelt es sich um ein Dateisystem im Userspace. Nutzen Sie es, zeigt Ihnen Obnam die Backups wie ein normales Verzeichnis an, das Sie einhängen. Dazu legen Sie mit dem Befehl aus der ersten Zeile von Listing 4 einen neuen Ordner im Home-Verzeichnis an. Dann hängen Sie das Verzeichnis mit den Sicherungen dort ein (Zeile 2) und sehen sich deren Inhalt an (Zeile 3).
Listing 4
$ mkdir ~/backups $ obnam mount --to ~/backups $ ls -l ~/backups drwxr-xr-x 25 root root 4096 Apr 27 19:59 5543 drwxr-xr-x 25 root root 4096 Mai 1 09:43 6751 lrwxr-xr-x 25 root root 4096 Mai 1 09:43 latest -> 6751 $ fusermount -u ~/backups
Dabei entspricht jedes angezeigte Verzeichnis einer (durch die Nummer eindeutig bezeichneten) Backup-Generation. Sie haben nun die Möglichkeit, in die Sicherung zu schauen, die Sie komplett oder teilweise wiederherstellen wollen. Dazu wechseln Sie in das entsprechende Verzeichnis und prüfen dessen Inhalt. Möchten Sie die letzte Sicherung oder Teile davon wiederherstellen, genügt der Parameter latest anstatt der Nummer.
Möchten Sie nur eine einzelne Datei zurückkopieren, legen Sie zuerst ein Verzeichnis an beliebiger Stelle an. Dann spielen Sie das File per Copy-Befehl dorthin. Nun haben Sie die Möglichkeit, die Datei mittels Diff [12] mit einer eventuell noch vorhandenen Version zu vergleichen. Nach dem erfolgreichen Wiederherstellen hängen Sie das Verzeichnis wieder aus (Listing 4, Zeile 7).
Steht FUSE und damit der Befehl obnam mount nicht bereit, suchen Sie mit dem Parametern generations und dem Befehl ls auf der Kommandozeile, was Sie zurückspielen wollen. Mit dem Befehl aus der ersten Zeile von Listing 5 holen Sie dann die fragliche Datei aus dem Repository. Die komplette letzte Generation restaurieren Sie mit dem Befehl aus Zeile 2, eine ältere Sicherung geben Sie per Nummer an (Zeile 3).
Listing 5
$ obnam restore --repository Repository/Pfad --to Pfad $ obnam restore --to Pfad $ obnam restore --to Pfad --5543
Automatisierte Backups erhalten Sie, indem Sie einen Cronjob [13] anlegen, der im angegebenen Intervall sichert. Einen solchen Cronjob richten Sie unter Gnome durch Nachinstallieren des Pakets gnome-schedule in einer grafischen Oberfläche ein. Ähnliches gilt für KDE, wo ein passendes Werkzeug bereits unter Systemeinstellungen | Aufgabenplaner vorliegt. Auf der Konsole gibt es einen Editor, den Sie mit crontab -e aufrufen.
Sie sollten testweise zu Beginn eine kleine Sicherung anlegen und diese sowohl komplett als auch teilweise zurücksichern. Das schafft das nötige Vertrauen in die Backups für den Fall eines Datenverlustes, sei es durch eine kaputte Festplatte oder ein versehentlich gelöschtes Verzeichnis. Der ein oder andere Fall wird mit ziemlicher Wahrscheinlichkeit früher oder später eintreten.
Fazit
Obnam ermöglicht es, mit ein wenig Lernaufwand Daten so platzsparend wie möglich lokal oder auf entfernten Servern zu sichern und im Notfall verlässlich wieder zurückzukopieren. Das Programm bietet zwar keine grafische Oberfläche, erweist sich in der Praxis aber trotzdem als einfach zu bedienen. Was nützt auch die schönste grafische Oberfläche, wenn Sie sie nach einem Absturz des Systems nicht mehr erreichen?
Obnam versteht sich auf Mandanten: Das ermöglicht kleinen und selbst mittleren Firmen Flexibilität, um die jeweiligen Anforderungen zu erfüllen. Welche Bedeutung die Daten haben und damit, wie aufwendig Sie sie sichern möchten, hängt vom Einzelfall ab. Obnam setzt Ihnen hier keinerlei Grenzen und sichert auf Wunsch die Daten mehrerer Kunden unter Berücksichtigung der Deduplikation in einem Repository.
TIPP
Als Obnam-Alternative mit grafischer Oberfläche bietet sich für den Hausgebrauch das auf dem Qt-Framework basierende Lucky Backup (Abbildung 1) an [14]. Es werkelt im Hintergrund mit Rsync, wodurch die Sicherungen um einiges größer ausfallen als mit Obnam. Dafür tun sich Ungeübte mit dem Einrichten leichter.
Infos
[1] Backup-Programme: http://de.wikipedia.org/wiki/Liste_von_Datensicherungsprogrammen
[2] Obnam-Tutorial: http://liw.fi/obnam/tutorial/
[3] Obnam-Manpage: http://liw.fi/obnam/obnam.1.txt
[4] Rsync: Heike Jurzik, “Synchroner Datenstrom”, LU 04/2006, S. 90, https://www.linux-community.de/9850
[5] Release Notes zu Obnam: http://liw.fi/obnam/1.0/
[6] Copy-on-Write: http://de.wikipedia.org/wiki/Copy-On-Write
[7] Near-CDP: http://www.searchstorage.de/definition/Near-Continuous-Data-Protection-Near-CDP-fast-kontinuierliche-Datensicherung
[8] Deduplikation: http://de.wikipedia.org/wiki/Deduplikation
[9] Obnam herunterladen: http://liw.fi/obnam/download/
[10] GnuPG: http://gnupg.archive.sunet.se/documentation/index.de.html
[11] FUSE: http://de.wikipedia.org/wiki/Filesystem_in_Userspace
[12] Diff: Heike Jurzik, “Der kleine Unterschied”, LU 11/2006, S. 94, https://www.linux-community.de/11124
[13] Cron: Heike Jurzik, “Punktlandung”, LU 02/2006, S. 94, https://www.linux-community.de/9812
[14] Lucky Backup: Falko Benthin, “Auf Knopfdruck”, LU 09/2012, S. 62, https://www.linux-community.de/25953






