Howto/Manuelle Wiederherstellung für Déjà Dup

Achtung!

Die Verwendung dieses Howto geschieht auf eigene Gefahr. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich zusätzlich an den Verfasser des Howtos.

Hinweis:

Diese Howto-Anleitung wurde zuletzt von Vej am 02.03.2018 unter Ubuntu 17.10 erfolgreich getestet.

Problembeschreibung

Bei der Wiederherstellung von Daten mittels Déjà Dup bricht diese gelegentlich aufgrund vorhergegangenener Probleme mit einer Fehlermeldung ab. In diesen Fällen kann versucht werden das Backup mit dem als Backend verwendetem Duplicity wiederherzustellen. Schlägt das fehl können oft noch Daten gerettet werden, indem zunächst mit gpg und tar entpackt und anschließend mit cat zusammengesetzt wird. Beide Wege sollen in diesem Howto erklärt werden.

Anleitung

Diese Anleitung geht davon aus, dass sich die gesamte Sicherung auf einem lokal gemountetem Medium, wie einer externen Festplatte befindet. Sollte die Sicherung auf einen Server erfolgt sein, ist diese zunächst lokal zu kopieren oder ggf. mittels gvfs-mount einzubinden. In letzterem Fall muss das Protokoll file:// in den folgenden Befehlen durch das verwendete ersetzt werden. Diese kann der folgenden Tabelle entnommen werden kann:

Backend Protokoll
FTP ftp://
SSH ssh://
WebDAV dav://
Windows Freigabe smb://

Vorbereitungen

Für die folgenden Schritte sollten ein paar Informationen über die Sicherung bereitgehalten werden. Zunächst sollte man den Sicherungspfad suchen. Der Sicherungspfad ist der Ordner auf dem Sicherungsmedium in dem sich die Dateien mit den Dateiendungen .difftar.gpg oder .difftar.gz befinden. Dieser Pfad wird als absoluter Dateipfad im Folgenden mit <Sicherungspfad> bezeichnet, wobei das abschließende / enthalten sein soll.

Als nächstes sollte man sich darüber klar werden, ob das Backup verschlüsselt, unverschlüsselt oder teilweise verschlüsselt ist. Bei unverschlüsselten Backups haben alle Dateien in der Sicherung die Dateiendungen .difftar.gz oder .manifest. Bei verschlüsselten Backups lauten diese .difftar.gpg oder .manifest.gpg. In den folgenden Kapiteln werden einige Befehle in einer Variante für verschlüsselte und für entschlüsselte Backups angegeben.

Wiederherstellung mittels Duplicity

Für die Wiederherstellung mit duplicity kann der folgende Befehl verwendet werden, der eine vollautomatische Wiederherstellung der letzten Sicherung durch duplicity versucht. Die weiteren Einstellungen werden dabei der Manifestdatei des Backups entnommen:

duplicity --no-encryption --gio file://<Sicherungspfad> /tmp/restore 

oder falls das Backup verschlüsselt ist:

duplicity --gio file://<Sicherungspfad> /tmp/restore 

Danach findet sich der gesicherte Dateipfad im Ordner /tmp/restore und sollte von dort in das Zielverzeichnis kopiert werden, da der temporäre Ordner nach einem Reboot gelöscht sein könnte.

Wiederherstellung mittels GPG, Tar und Cat

Schlägt der Wiederherstellungsversuch mittels Duplicity fehl, bleibt noch die "manuelle" Wiederherstellung mit den von Duplicity verwendeten Programmen.

Zunächst sollte dafür ein Vollbackup (mit "full" in den Dateinamen) ausgewählt werden. Dazu betrachtet man die Dateinamen im Sicherungsordner. Diese enthalten eine Identifizierungsnummer der Form JJJJMMTTXXXXXXXX. Eine Manifestdatei mit dem Namen duplicity-full.20171008T012345Z.manifest.gpg wäre also von einem Vollbackup, das am 08.10.2017 durchgeführt wurde und hätte die Identifizierungsnummer 20171008T012345Z. Diese Identifzierungsnummer des ausgewählten Backups wird im Folgenden mit <SicherungsID> bezeichnet.

Verschlüsselte Backups müssen hier zunächst mittels des folgenden Befehls entschlüsselt werden. Die entschlüsselten Dateien werden dabei im Sicherungspfad abgelegt. Dort wird ggf. viel Speicherplatz benötigt!

cd <Sicherungspfad>
gpg --multifile --decrypt duplicity-full.<SicherungsID>.*.difftar.gpg 

Anschließend werden die Pakete mit tar entpackt. Für ehemals verschlüsselte Sicherungen geht das mittels

for t in duplicity-full.<SicherungsID>.*.difftar; do tar xf $t; done 

für unverschlüsselte Sicherungen lautet der Befehl

for t in duplicity-full.<SicherungsID>.*.difftar.gz; do tar xf $t; done 

Nach diesem Entpacken gibt es zwei Ordner im aktuellen Arbeitsverzeichnis. Der Ordner snapshot enthält den gesicherten Dateibaum mit allen Dateien, die vollständig in einem der entpakten Pakete enthalten waren. Die übrigen Dateien liegen im Dateibaum in multivolume_snapshot in einem Ordner pro Datei und müssen noch zusammengesetzt werden.

Für einzelne Dateien geht das mit dem Kommando cat. Dazu wechselt man in das Unterverzeichnis von multivolume_snapshot, das den Namen der gewünschten Datei trägt und führt den Befehl cat * > <Dateiname> aus.