Inkrementelles NAS Backup mit duplicity und Microsoft OneDrive

Das Problem – Speicherplatz und Sicherung der Daten

Ich bin mir sicher, jeder kennt das folgende Problem. Im Laufe der letzten Zehn Jahre sind nicht nur unsere Computer immer günstiger geworden. Auch der darin verbaute Speicherplatz kostet in der heutigen Zeit fast nichts mehr. Während man 1997 rund 100 Dollar pro Gigabyte Festplattenspeicher zahlen musste, bekommt man ein Gigabyte Speicher 2017 für rund 0,05 Dollar (vgl. A history of storage cost – Matt Komorowski). Dies hat erhebliche Auswirkungen darauf, wie wir mit unseren Daten umgehen. In der heutigen Zeit werden Fotos nicht mehr aussortiert. Gespeichert wird alles, was vor die Linse kommt. Die gute alte Musik und Videosammlung liegt auf einer externen Festplatte im Schrank und wird wohl bald in Vergessenheit geraten.

Wer all diese Daten sicher aufbewahren möchte, benötigt mindestens eine vollständige Sicherheitskopie. Diese Sicherheitskopie sollte im besten Fall an einem anderen Standort aufbewahrt werden, damit im Fall eines Brandschadens nicht auch die Festplatte mit den Sicherungen zerstört wird.

Während die Sicherung alter Daten, die man nicht mehr regelmäßig benötigt oder ändert, kein Problem darstellt, ist das mit aktuellen Daten wie Dokumenten oder den aktuellen Fotos schon schwieriger. Hier sollte eine Sicherung möglichst regelmäßig durchgeführt werden. Während man zu beginn noch mit großem Elan Festplatten mit den Verwandten hin und her tauscht um im Schadenfall gut da zu stehen und stunden investiert um alle Daten in regelmäßigen Abständen zu kopieren, wird das Intervall mit der Zeit immer größer. Irgendwann nervt es wohl so sehr, dass eine Sicherung im besten Fall einmal im Jahr erfolgt.

Auch die Daten auf meinem NAS werden aktuell auf eine externe Festplatte gesichert. Diese Festplatte wird zwischengelagert. Das erstellen dieser Sicherung kostet mich ungefähr 4 Stunden und wird in der Regel alle 2-3 Monate durchgeführt. Diese Aufwändige Art der Datensicherung möchte ich nun etwas komfortabler gestallten.

Ich beschäftige mich deshalb in den nächsten Tagen etwas ausführlicher mit dem Thema Datensicherung und beschreibe hier die Schritte, die für mich erforderlich waren, um bei diesem komplexen Thema weiter zu kommen.

Zukünftige Rahmenbedingungen für die Datensicherung

In Zukunft möchte ich meine Datensicherung automatisiert, zuverlässig und regelmäßig vornehmen. Die Daten sollen mit einem Cloudspeicher synchronisiert werden. Natürlich möchte ich die Daten nicht einfach lesbar in den weiten des Internet ablegen. Dahler soll eine Verschlüsselung der Daten erfolgen. Im folgenden eine Übersicht, welche Systeme aktuell Verwendung finden und welche Daten gesichert werden sollen.

  • HP Proliant Microserver mit Openmediavault als NAS (Debian)
  • VirtualBox mit insgesamt 3-4 virtuellen Maschinen ebenfalls Debian (Datenbank, Hausautomation usw.)
  • Zu speichernde Daten ca. 350 Gigabyte
  • Cloudspeicher Microsoft OneDrive 1 Terrabyte
  • Programm zur Datensicherung duplicity

Duplicity ist eine für Linux entwickelete Datensicherungssoftware, mit der sogenannte inkrementelle Backups erstellt werden können. Duplicity erfasst Änderungen im Dateisystem anhand des rsync-Algorithms. Die erstellten Backup-Dateien werden verschlüsselt und können daher sicher auf einem Cloudspeicher abgelegt werden. Ein nachteil von Duplicity ist, dass es nach der „forward delta“ Methode arbeite. Nach einem vollen Backup folgt eine beliebige Anzahl inkrementeller Backups, in denen nur die Veränderungen gegenüber dem vorherigen Datenbestand gesichert werden. Bei einer Datenwiederherstellung muss der original Datenbestand aus vielen inkrementellen Backups rekonstruiert werden.

Der Weg zum Backup – Vorbereitungen

Die Einrichtung von duplicity erfordert ein paar grundlegende Linux Kenntnisse. Im folgenden sind daher alle notwendigen Schritte aufgeführt um erste Sicherungen mit duplicity durchzuführen. Eine ausführliche Anleitung, die mir beim einrichten sehr geholfen hat, findet man auf dem Blog von Matthias.

Mit dem folgenden Befehl müssen zwei Schlüsselpaare generiert werden. Ein Encryption-Key Paar und ein Signing-Key Paar. Für jedes Schlüsselpaar wird auch noch ein Passwort (pass phrase) benötigt. Der Signing-Key muss zuerst erstellt werden.

gpg --gen-key

Beim erstellen der Schlüssel wird nach dem zu erstellenden Schlüsseltyp gefragt. Hier sollte RSA und RSA gewählt werden. Die Länge wird auf 4096 bit festgelegt. Der Schlüssel darf nicht verfallen.
Nachdem diese Angaben gemacht wurden, muss noch eine User-ID festgelegt werden. Dies geschieht anhand des Namen, der Email Adresse und einem Kommentar. Wenn die Bytes für den Schlüssel generiert sind, bekommt man folgende Ausgabe. Die Schüssel können mit dem Befehl –list-keys angezeigt werden.

pub   4096R/21AB12FC 2018-01-27
  Schl.-Fingerabdruck = 5366 D4D8 D312 5B1B 150E  7FCC 3D0E 4954 72CF 79DB
uid                  Christian Bleser (duplicity_sign key for duplicity signing) <info@christian-bleser.de>
sub   4096R/AD13B2E4 2018-01-27
gpg --list-keys

Die Angegebenen Id´s, im Beispiel oben 21AB12FC, werden beim ausführen der duplicity Befehle benötigt. Im nächsten Schritte sollte der Encoding-Key noch signiert werden.

gpg --sign-key duplicity_enc

Sichern der erzeugten Schlüssel

Die in den vorherigen Schritten erstellten Schlüsselpaare sollten möglichst sicher aufbewahrt werden. Ohne diese Schlüssel ist ein wiederherstellen der verschlüsselten Daten nicht mehr möglich. Die mit den folgenden Befehlen gespeicherten Schlüssel werden im aktuellen Verzeichnis abgelegt.

gpg --armor --export -a 21AB12FC > duplicity_sign_public.key
gpg --armor --export -a xxxxxxxx > duplicity_enc_public.key
gpg --armor --export-secret-keys -a xxxxxxxx > duplicity_sign_private.key
gpg --armor --export-secret-keys -a xxxxxxxx > duplicity_enc_private.key

Installation von duplicity

Nachdem die Installation von duplicity vorgenommen wurde kann mit ein paar Testdateien ein lokales Backup erstellt und die Ver- und Entschlüsselung getestet werden.

apt-get install duplicity

Erstellen eines ersten vollen Backups

Mit dem folgenden Befehl wird das erste Backup des Ordners original erstellt.

duplicity full --encrypt-key xxxxxxxx --sign-key 21AB12FC /tmp/original file:///tmp/backup

Bei mir hat das Backup mit der Fehlermeldung Import of duplicity.backends.sshbackend Failed: No module named paramiko im ersten Versuch nicht funktioniert. Sollte dies bei euch auch der Fall sein, müsst ihr das Modul mit dem folgenden Befehl installieren.

apt-get install python-paramiko python-gobject-2

Mit dem Befehl verify kann man  sich einen Vergleich von Original und Backup ausgeben zu lassen. Mit dem Befehl collection-status werden die Sicherungen aufgelistet.

duplicity verify file:///tmp/backup /tmp/original
duplicity collection-status file:///tmp/backup

Ein Backup wiederherstellen

Um das erstellte Backup in einem anderen Ordner wiederherzustellen genügt es, den folgenden Befehl auszuführen.

duplicity restore --encrypt-key xxxxxxxx --sign-key 21AB12FC file:///tmp/backup /tmp/restored

Nachdem duplicity die Dateien wiederhergestellt hat, sollten die Inhalte der Ordner /tmp/original und /tmp/restored identisch sein.

Next stepps

Wenn alle oben beschriebenen Schritte erfolgreich durchgeführt wurden und duplicity im lokalen System fehlerfrei arbeitet, kann damit begonnen werden die Backups nicht im lokalen System sonder in der Cloud zu speichern. Dieser Schritt wird im nächsten Post erläutert.