Cloud-Backup mit Bordmitteln
Und jetzt alle zusammen
Bis auf rsync
, das den Transfer der Daten vom eigenen Rechner zum Server im Internet übernimmt, wurden alle Komponenten vorgestellt. Jetzt kommt es nur noch auf das Zusammenspiel an. In der Theorie soll das bup-Repository in EncFS abgelegt und dieses verschlüsselte bup-Archiv wiederum hochgeladen werden.
Um die Sache zu vereinfachen, habe ich das Skript encfsBupBackup
(Download bei Sourceforge) geschrieben, das diese einzelnen Schritte zusammenfasst und für den Benutzer vereinfacht. Damit das Skript einfach genutzt werden kann, sollte man es in ein Verzeichnis, das im Pfad für ausführbare Dateien (z.B. /usr/local/bin) aufgelistet ist, ablegen und mittels chmod +x encfsBupBackup
ausführbar machen.
Beim ersten Aufruf von encfsBupBackup wird eine Vorlage für die Konfigurationsdatei ~/encfsBupBackup.rc angelegt, die man dann mit einem Editor anpassen muss. Neben den Verzeichnissen für EncFS und das bup-Archiv sind das EncFS-Password für das automatische Mounten, sowie die Zugangsdaten für den Internet-Server anzugeben.
Daten sichern
Das Anlegen von EncFS und bup-Repository übernimmt encfsBupBackup, sodass man gleich mit dem Sichern von Daten beginnen kann:
$ tar cv ~ | encfsBupBackup pipeIn "tar-Test2"
Oder auf Dateiebene:
$ encfsBupBackup filesIn "datei-Test2" ~
Das Einhängen vor dem Sichern und anschließende Aushängen übernimmt wiederum das Skript.
Status abfragen
Zur weiteren Vereinfachung enthält encfsBupBackup Funktionen, um den Status des bup-Archives abzufragen.
Neben den Protokollen, die git/bup mitbringen, legt encfsBupBackup ein Eigenes an, das die Namen der Backup-Sätze und die CommitID einer jeden Sicherung enthält. Dieses kann man sich anzeigen lassen mit:
$ encfsBupBackup lsLog
Um nur die Namen aller Backup-Sätze zu bekommen, verwendet man:
$ encfsBupBackup lsBackups
Für die Auflistung der CommitIDs aus dem Backup-Satz tar-Test2
dient folgender Einzeiler:
$ encfsBupBackup lsCommits "tar-Test2"
Die Sicherungsdaten ermittelt man mittels:
$ encfsBupBackup lsDates "datei-Test2"
Daten wiederherstellen
Das Wiederherstellen eines Datenstromes anhand seiner CommitID geschieht unspektakulär via:
$ encfsBupBackup pipeOut c9242bd6bb9cfd9c285f01ebb0dcdacf0c620038 | tar xv
Dateien können folgendermaßen zurückgesichert werden:
$ encfsBupBackup filesOut "datei-Test2" "2012-04-23-171250"
Der Zugriff via FUSE und Webserver geschieht über:
$ encfsBupBackup fuse /tmp/mountpunkt
bzw. über:
$ encfsBupBackup web
Was tun, wenn's klemmt?
In seltenen Fällen kann es vorkommen, dass eine Wiederherstellung aufgrund angeblich fehlender Dateien nicht vorgenommen werden kann. Dies ist aber kein Grund zur Panik, denn nach dem Entschlüsseln des bup-EncFS-Archives funktioniert die Wiederherstellung tadellos.
Um die Entschlüsselung vorzunehmen, verwendet man folgendes Kommando:
$ encfsBupBackup decrypt
Nachfolgende Wiederherstellungsaktionen werden nun aus dem (temporär) entschlüsselten Archiv vorgenommen. Für das Löschen des ungeschützten Archivs gibt es:
$ encfsBupBackup rmDecrypt
Zum Überprüfen der Datenintegrität dient:
$ encfsBupBackup fsck
Hoch damit
Damit aus dem lokalen Backup auch ein »Cloud-Backup« wird, muss es natürlich noch hochgeladen werden. Dies erledigt:
$ encfsBupBackup upload
Warum das Ganze?
Meine Motivation war anfangs das Sichern von Thunderbird-Postfächern, bei denen die E-Mails jeweils in großen Dateien zusammenfasst werden. Innerhalb dieser Dateien verändert sich bei jedem Abholen oder Senden von E-Mails allerdings nur wenig. Daher macht das Sichern von kompletten Zuständen wenig Sinn. Eine intelligente Lösung, die jeweils nur die Differenz speichert, mir aber das Zurücksetzen der Postfächer auf den Zustand eines beliebigen Datums erlaubt, musste her. Nachdem ich ein Skript erstellt hatte, das den kompletten E-Mail-Backup-Vorgang mit den vorgestellten Werkzeugen abdeckte, wollte ich auch weitere Daten effizient sichern. So kam es zu der Entwicklung des Skriptes encfsBupBackup, mit dem ich beliebige Daten durch kurze Skripte sichern lassen kann. Neben den E-Mail-Postfächern sichere ich nun alle wichtigen Dateien und Dokumente sowie den Entwicklungszweig von m23 nebst Datenbank mittels encfsBupBackup.
Autoreninformation
Hauke Goos-Habermann (Webseite) arbeitet freiberuflich als Entwickler und Trainer für Linux und Open-Source-Software. Er ist zudem Hauptentwickler des Softwareverteilungssystems m23 und weiterer OSS sowie Mitorganisator der Kieler Open Source und Linux Tage.
Dieser Artikel ist in freiesMagazin 06/2012 (ISSN 1867-7991) erschienen. Veröffentlichung mit freundlicher Genehmigung.