Wiederherstellen von Backups

Das Schlimmste ist passiert! Ihre Katze hat das Katzenklo und Ihre Festplatte verwechselt! Ihre Ziege hat Ihr allerwichtigstes Dokument gelöscht! Wehe Dir!

Bleiben wir ruhig. Genau dafür haben wir ja Backups. Es gibt keinen Grund für Ausrufezeichen. Atmen Sie tief ein, trinken Sie eine Tasse Tee, und alles wird gut.

Es gibt zwei verschiedene Ansätze für die Wiederherstellung von Daten mit Obnam. Einer stützt sich auf das FUSE-Dateisystem. Dieses sehr schöne Stück Technik macht es möglich, dass Obnam Ihre Backups einfach als eine Verzeichnis darstellt. Es ist der bevorzugte Weg, aber nicht immer möglich, daher hat Obnam auch eine primitivere, weniger leicht zu bedienende Methode.

Wiederherstellen mit FUSE1

Mittels obnam mount können Sie Ihre Backups ansehen, als wären sie ein Verzeichnis wie jedes andere. Dazu müssen Sie allerdings FUSE installiert haben (vgl. Kapitel "Installation" für Details). Die meisten modernen Linux Desktops bringen FUSE schon mit.

mkdir ~/backups
obnam mount --to ~/backups

Führen Sie den Befehl oben aus und schauen Sie dann in das Verzeichnis ~/backups. Sie werden ungefähr das hier sehen:

$ ls -l ~/backups
total 12
drwxr-xr-x 24 root root 4096 Feb 11 21:41 2
drwxr-xr-x 24 root root 4096 Feb 11 21:41 5
lrwxr-xr-x 24 root root 4096 Feb 11 21:41 latest -> 5
$

Jedes Verzeichnis unter ~/backups ist eine Generation Ihres Backups, benannt nach dem "generation identifier" den Obnam vergibt. Der Symlink latest zeigt immer auf die neueste Generation.

Jetzt können Sie kinderleicht eine Datei wieder herstellen:

cp ~/backups/latest/home/tomjon/Documents/iloveyou.txt ~/restored.txt

Sie können beliebige Dateien aus dem Verzeichnis ~/backups kopieren, aus jeder Generation, oder aus allen wenn Sie möchten. Sie können die Dateien auch erst ansehen, bevor Sie sie herauskopieren:

less ~/backups/2/home/tomjon/Documents/iloveyou.txt

So finden Sie leicht die Version die Sie suchen, nicht nur die neueste.

Etwas löschen können Sie in ~/backups nicht. Das Verzeichnis ist read-only und Sie können weder absichtlich noch unabsichtlich etwas darin löschen oder verändern. Dieses Verhalten ist beabsichtigt: obnam mount soll eine sichere Möglichkeit bieten, Ihre Backups zu betrachten, ohne das Sie besondere Sorgfalt walten lassen müssen.

Wenn Sie Ihre Backups nicht mehr ansehen möchten, können Sie das Repository un-mounten:

fusermount -u ~/backups

Neben der Kommandozeile können Sie natürlich auch den Dateimanager Ihrer Wahl benutzen. Den mount und un-mount Vorgang müssen Sie (abhängig von der Konfiguration Ihres PCs) eventuell trotzdem auf der Kommandozeile durchführen.

Wiederherstellen ohne FUSE

Wenn obnam mount nicht verfügbar ist, können Sie direkt mit Obnam wiederherstellen. Verwenden Sie obnam generations und obnam ls, um die richtige Generation zur Wiederherstellung zu finden, und führen Sie dann einen Befehl wie diesen aus:

obnam restore --to /tmp/tomjon-restored /home/tomjon/Documents

So wird das angegebene Verzeichnis wieder hergestellt. Ohne Angabe, was wieder herzustellen ist wird die gesamte neueste Generation wieder hergestellt. Eine andere Generation währen Sie mit --generation aus:

obnam restore --to /tmp/tomjon-restored --generation 2

Hinweis: Sie können kein Verzeichnis wiederherstellen, das bereits existiert. So wird verhindert, das Sie ein bereits existierendes Verzeichnis mit den wieder hergestellten Daten überschreiben. Wenn Sie Ihre Live-Daten wirklich ersetzen möchten, sollten Sie zunächst in ein temporäres Verzeichnis zurücksichern und dann die Daten verschieben.

Die Datei bzw. das Verzeichnis das Sie wiederherstellen möchten muss mit absolutem Pfad angegeben werden, also beginnend mit /. Es darf nicht relativ zum aktuellen Verzeichnis sein.

Konkretes Beispiel einer Wiederherstellung

Um eine korrupte Datei meines News Readers wiederherzustellen ging ich wie folgt vor:

obnam --config=/home/foobar/cron/conf/obnam.conf generations>~/cron/upload/obgen.txt

Dies schreibt alle Generationen in eine Datei mit Namen "obgen.txt", hier ein Auszug:

1207586    2014-08-25 08:00:43 .. 2014-08-25 08:08:24 (385163 files, 175029819657 bytes)
1208367    2014-08-25 12:00:42 .. 2014-08-25 12:08:31 (385965 files, 175057598863 bytes)
1209313    2014-08-25 16:00:12 .. 2014-08-25 16:07:33 (386537 files, 175076976590 bytes)
1210254    2014-08-25 20:00:15 .. 2014-08-25 20:09:41 (386896 files, 175086483254 bytes)

Ich wollte aus Generation 1208367 wiederherstellen. Das war der konkrete Befehl:

obnam --config=/home/benutzername/cron/conf/obnam.conf --generation=1208367 restore ~/News/rss/nnrss.el --to=/home/benutzername/cron/upload/

Der Befehl holt die Datei 'nnrss.el' aus der angegebenen Generation und legt sie in ~/cron/upload/ ab. Von dort aus kopierte ich sie einfach wieder an ihren Platz.

Übung macht den Meister

Sie sollten das Zurücksichern üben. So bekommen Sie mehr Vertrauen und Ihre Backups und können ruhiger bleiben, wenn das Schlimmste passiert. Etwas hochgestocherner ausgedrückt: Sie sollten Ihren Disaster Recovery Plan testen.

Machen Sie testweise eine Wiederherstellung von ein paar Dateien oder sogar allen, bis Sie sicher wissen wie das geht. Von Zeit zu Zeit sollten Sie das wiederholen um sicher zu sein das Ihre Backups immer noch funktionieren. Es ist viel weniger beängstigend, nach Datenverlust eine echte Wiederherstellung zu machen, wenn man vorher geübt hat.

In extremen Fällen, insbesondere wenn Sie ein Obnam Entwickler sind, sollten Sie vielleicht mal Ihre Festplatte formatieren und dann die Wiederherstellung durchführen, nur um zu wissen, das Sie es können. Wenn Sie kein Obnam Entwickler sind, wäre das vielleicht ein bisschen extrem: Benutzen Sie einfach eine separate Festplatte statt der eingebauten.


  1. Anm. d. Ü.: Sprachkomik zu übersetzen ist schwer, der Witz bleibt dabei zu oft auf der Strecke. Daher versuche ich es garnicht erst.