Backup Gedanken

Wie viel Menschen mache auch ich Backups etwas ... schleißig.

In unregelmäßigen Abständen werden Daten mal auf eine externe Festplatte geschoben, ohne großes System, von Automatisierung ganz zu schweigen. Jetzt weiß ich zwar, daß es suboptimal ist aber naja, man wurschtlt sich halt so durch.

Doch mit dem Frühling der ins Land zieht kommt bei mir zumindest auch der Drang nach einem digitalen Frühjahrsputz, nach mehr Doku schreiben, nach aufgeräumteren Downloads Ordnern und eben auch nach einem besseren Backupsystem.

Als ich daraufhin die Weisheit meiner Twittergefolgschaft anzapfte waren die Ergebnisse ... vielfältig. Ich habe Antworten von 7 Menschen bekommen, welche mir (Je nachdem wie man zählt.) zwischen 6 und 9 Tools empfohlen.

Ah ja. XD

Jetzt war mir klar das es DIE LÖSUNG™ nicht geben wird, aber die absolute Uneinigkeit hat mich doch etwas überrascht.

(Naja, ok, völlig uneinig waren sich die Leute auch nicht: Zumindest zwei haben rsync explizit erwähnt und ein paar der anderen Tools bauen auf rsync auf. So: Yay?)

Anscheinend ist es mit Backups so wie bei den meisten anderen technischen Dingen: Jede*r legt auf andere Dinge wert und alle erfinden das Rad neu. XD

Doch was will ICH eigentlich von einem Backup?

Je mehr ich mir die empfohlenen Werkzeuge anschaute, desto klarer wurden meine eigenen Erwartungen am meine zukünfige Backuplösung:

  • Remote
  • Automatisierbar
  • Inkrementell
  • Verschlüsselt
  • “Offene Standards”

Ich möchte also ein Backup, das ich wo hochladen kann, das durchrennt ohne daß ich mich drum kümmern muss, das von Durchlauf zu Durchlauf nur speichert/hochlädt was sich geändert hat, das ich verschlüsseln kann und das aus Standardtools aufbaut und idealerweise ohne spezielle Software dennoch wiederherstellbar ist.

Leider gibt es diese eierlegende Wollmilchsau der Datensicherung so direkt anscheinend nicht. Schnell zeigte sich, daß sich einzelne Kriterien ausschlossen und das aktuelle Ökosystem aussieht wie ein Venn Diagramm mit ein paar sich TEILWEISE überlappenden Mengen.

Ich hab also die Wahl zwischen:

  • remote, inkrementell und mit Standardtools wiederherstellbar (Rsync und andere “spiegelnde” Systeme)
  • remote, inkrementell und verschlüsselt (Duplicity, Duplicati, und andere Tools die die Daten aufsplitten und Metadaten selber verwalten)
  • remote, verschlüsselt und mit Standardtools wiederherstellbar (Diverse scp + gpg/AEScrypt Skripte)
  • verschlüsselt, inkrementell und mit Standardtools wiederherstellbar (Rsync in einem verschlüsselten Container auf der lokalen Platte)

Wieso? Naja, wenn ich Daten hochladen möchte sollten die idealerweise verschlüsselt sein. Verschlüsseln heißt aber: Mit jeder kleinen Änderung des Klartext ändert sich ein Großteil des Cyphertexts. Somit geht geht entweder der Vorteil des inkrementellen Backups verloren, nämlich nach dem ersten vollen Backup nur noch die Änderungen zu speichern, oder aber es benötigt eine komplexere Struktur in der die Datei in kleinere Brocken aufgeteilt wird und Diese seperat verschlüsselt werden. Dadurch kann dan beim späteren Backup nur der Brocken hochgeladen werden, der sich tatsächlich geändert hat, aber das Backup ist nicht mehr ohne weiteres mit Standardtools wiederherstellbar. (Sondern braucht also das ursprüngliche Backuptool dazu.)

Lokal hab ich mehr Spielraum, denn da könnte ich einen verschlüsselten Container/ein verschlüsseltes Dateisystem nehmen und darin ein normales, inkrementellen Backup fahren. Das lässt sich aber nicht so einfach hochladen, denn dann müsste ich immer den gesamten zig-GB Container hochladen, was völlig unpraktisch ist.

Nachdem ich das so für mich erkannt hatte war ich erstmal etwas gefrustet. (-_-)

Nach ein paar Tagen Gegrübel kam mir eine Idee wie ich das für mich doch vielleicht noch lösen könnte: Anstatt die eine Lösung die alles macht zu suchen könnte ich doch auch zwei verschiedene Varianten kombinieren.

Mein aktueller Plan sieht also so aus: Im lokalen Netz hängt ein Fileserver, auf den die Heimrechner ihre mittels rsnapshot gemachten Backups pushen. Dieser Rechner pusht nun einmal am Tag (bzw. vermutlich irgendwann in der Nacht) eine verschlüsselte Sicherung der aktuellen Backups mit einem Tool wie Duplicity oder Duplicati auf einen entfernten Server.

Der remote Server sieht nur verschlüsselte Daten. Diese sind zwar nicht mit Standardtools mal eben so wiederherstellbar, aber das remote Backup soll hier ja nur dagegen sichern, daß dem lokalen Backupserver irgendwas passiert.

Der lokale Server hat die Daten zwar unverschlüsselt bzw. nur durch eine Festplattenverschlüsselung gesichert, aber dafür liegen die einfach als gespiegelte Daten vor und sind somit mit Standardtool einfach les- und wiederherstellbar.

Klar hat dieses System noch einige Mängel:

  • Ich muss einen Server im lokalen Netz selber betreiben und mir was externes Suchen, wo ich zumindest Daten hin- und runterschaufeln kann. Beides kostet.
  • Je komplexer das System desto höher die Wahrscheinlichkeit, daß irgendwas schief geht. Bei Backup uncool.

Aber so als Grundidee hat es was.

...

Jetzt muss der Scheiß nur noch implementiert werden... #trololo