Marcs Blog

Wie ich mein Backup mache

Über Jahre habe ich keine konsequente Backupstrategie verfolgt. Im April diesen Jahres habe ich mich mit dem Thema ausführlich auseinander gesetzt und ein Backup implementiert. Dieses möchte ich hier grob vorstellen.

Mein Backup in der Vergangenheit

Bis vor einiger Zeit hatte ich keine geregelte Backupstrategie. Sicherungen erfolgten impulsiv, aus dem Bedürfnis heraus, dass "ich mal wieder sichern müsste". Dateien wurden aus allen möglichen Quellen an einen gerade verfügbaren Ort kopiert.

Quellen waren dabei zum einen natürlich verschiedene Ordner auf meinen Rechnern. Hinzu kamen noch diverse Cloud-Laufwerke und Daten meiner mobilen Geräte. Ziele meiner Backups waren ebenso vielfältig. Das konnte die zweite Festplatte in einem meiner Rechner sein, eine externe Festplatte oder mein NAS.

Das Ergebnis war nach einigen Jahren ein heilloses Durcheinander. Von einzelnen Dateien gab es zum Teil zehn oder mehr Kopien. Einige Verzeichnisse, etwa meine Uni-Ordner, gab es ebenfalls in verschiedenen Ausführungen, die jeweils zu einem unterschiedlichen Zeitpunkt entstanden. Es war nur schwer erkennbar, welche Versionen die aktuellsten Backups darstellten, was ich gefahrlos löschen konnte und was noch aufbewahrt werden sollte. Hinzu kam, dass die Vielzahl an Kopien meiner Daten mittlerweile Speicher in Terabytebereich beanspruchten.

Vorarbeiten

Bevor nun also ein strukturiertes Backup implementiert werden konnte, musste erstmal Struktur in meine Daten gebracht werden. Das umfasste im Wesentlichen die Reduktion auf wenige, definierte Ablageorte und damit verbundene Datenflüsse. Alltägliche Daten liegen nun auf meinem Notebook in den Nutzerverzeichnissen, statische Dateien wie Fotos und Musik werden auf einer großen externen Festplatte abgelegt und wichtige Verzeichnisse auf meinen mobilen Geräten werden regelmäßig via Syncthing auf mein Notebook synchronisiert.

Weiterhin musste ich die bestehenden Daten deduplizieren und ordnen. Das ist ein langwieriger Prozess, der bis heute noch nicht vollständig abgeschlossen ist. Eine große Hilfe war hierbei Czkawka. Czkawka sucht unter anderem effizient nach binär identischen Dateien.

Ein gewisser Grad an Duplikation wird jedoch weiterhin in Kauf genommen: Benötige ich Daten für ein aktuelles Projekt, die eigentlich auf der externen Festplatte liegen, kopiere ich diese dennoch in ein Projektverzeichnis auf dem Notebook. Das können etwa Fotos sein, wenn ich eine Fotokollage anlegen möchte oder Regelbücher, wenn ich eine Pen-and-Paper-Session vorbereiten möchte. Wie wir später sehen können macht dies aufgrund von Deduplikation im Backup nur einen geringen Unterschied.

Unterm Strich hätte ich mir gewünscht, von Anfang an meine Daten und Backups strukturiert zu halten.

Meine Anforderungen an das Backup

Zu Anforderungen an Backups und Maßnahmen existieren eine ganze Menge Buzzwords. Nennenswert sind das Generationenprinzip, die 3-2-1-Regel, beziehungsweise deren Variante 3-2-1-1-0 Regel oder nicht zuletzt das humoristisch ausgelegte Tao of Backup.

Ich möchte diese Prinzipien hier nicht im Detail erläutern. Dazu finden sich im Netz genügend bessere Quellen. Stattdessen sollen lediglich meine daraus resultierenden Punkte aufgezählt werden. Zu meinen Anforderungen an das Backup gehören

Es sei gesagt, dass sich mein Backup lediglich auf persönliche Daten beschränken soll. Dabei handelt es sich im Wesentlichen um Fotos, Musik, Dokumente und ausgewählte Software. Ich möchte nicht zusätzlich Betriebssystemdateien oder sämtliche Software und Konfigurationen sichern.

Das Tao of Backup widerspricht dem eigentlich bereits in seinem ersten Punkt:

The novice said: "I will save my working files, but not my system and application files, as they can be always be reinstalled from their distribution disks."

The master made no reply.

The next day, the novice's disk crashed. Three days later, the novice was still reinstalling software.

Ich denke jedoch, dass ich im Falle eines Falle innerhalb eines Nachmittags wieder arbeitsfähig sein kann.

Meine aktuelle Backuplösung

Im Folgenden möchte ich meine aktuelle Backuplösung kurz beschreiben. Dabei verzichte ich bewusst auf tiefere, technische Details.

Die verwendeten Backupmedien

Als Backupmedium verwende ich aktuell drei externe Festplatten. Diese werden unabhängig voneinander verwendet und monatlich rotiert. Dabei liegt immer eine Festplatte in meinem Büro, wodurch sie bei einem Wohnungsbrand oder anderen Katastrophen nicht in Mitleidenschaft gerät. Im Vergleich zu einer Cloud-Lösung habe ich die Vorteile, dass keine regelmäßigen Gebühren anfallen und dass – dank USB 3.0 – das Sichern und Wiederherstellen vergleichsweise schnell geschieht.

Restic Backupsoftware

Nach einiger Recherche habe ich mich bei der Software für restic entschieden. Dabei handelt es sich um eine Open-Source-Lösung, die ohne grafische Benutzeroberfläche auskommt. Stattdessen werden alle Funktionen über die Kommandozeile angeboten. Das kann für Nutzer ohne technischen Hintergrund durchaus ein Hindernis darstellen, ist hier jedoch kein Problem.

Restic hält den aktuellen Stand aller gesicherten Dateien als Snapshot in einem Repository fest. Dabei wird Deduplikation verwendet: Daten, die bereits einmal gesichert werden, werden nicht erneut an das Repository übertragen oder gespeichert. Dies bedeutet zum einen eine Zeitersparnis bei der Durchführung des Backups, zum anderen wird hierbei auch der Speicherplatz auf dem Backupmedium geschont. Letzteres wird durch zusätzliche Kompression der Daten unterstützt.

Daten werden durch restic grundsätzlich verschlüsselt abgelegt. Sollte etwa meine im Büro abgelegte Festplatte einem Dritten in die Hände fallen, kann dieser nicht ohne hohen Aufwand an meine Dateien gelangen.

Mithilfe von restic ist es möglich, fast beliebig viele Snapshots effizient vorzuhalten. In der Regel möchte man diese dennoch regelmäßig bereinigen. Dazu werden Policies angeboten, die das Behalten einer bestimmten Anzahl von täglichen, wöchentlichen, monatlichen oder jährlichen Snapshots ermöglichen. Auf diese Weise lässt sich bequem das Generationenprinzip einhalten. Restic unterscheidet dabei problemlos zwischen den Quellen des Backups. Für die Sicherung meines Notebooks und meiner externen Datenfestplatte werden also die Snapshots unabhängig voneinander bereinigt.

Da für die Deduplikation für alle Daten Prüfsummen berechnet und gespeichert werden, kann die Korrektheit des Backups damit einfach überprüft werden. Das nimmt auch bei einem lokalen Repository einige Zeit in Anspruch. Eine Fehlerkorrektur ist seitens restic leider nicht vorgesehen. Da ich jedoch mehrere voneinander unabhängige Backupmedien verwende, denke ich diesen Makel verschmerzen zu können.

Resticprofile als Unterstützung

Wie bereits erwähnt handelt es sich bei restic um eine Kommandozeilenanwendung. Für die tägliche Arbeit wird in der Regel eine Vielzahl an Optionen und Parametern übergeben, was den eigentlichen Befehl sehr umfangreich werden lässt. Dazu zählen etwa Pfade für das Repository, die Passwort-Datei, das eigentliche Kommando und die Optionen für das jeweilige Kommando.

Abhilfe schafft hier beispielsweise resticprofile. Dieses ermöglicht es, alle gängigen Optionen der Kommandos von Restic in einer Konfigurationsdatei zu definieren und daraus dann die Befehle abzuleiten und auszuführen.

Weiterhin ermöglicht resticprofile die Erzeugung von Zeitplänen für Aufgaben, etwa Backups oder Wartungstasks.

Backups im täglichen Einsatz

Bisher führe ich alle Tätigkeiten manuell aus. Grund hierfür ist hauptsächlich, dass das Backupmedium hierfür angeschlossen sein muss, was nicht immer der Fall ist. Ein automatisches Backup müsste diesen Umstand erkennen und entsprechend reagieren können.

In der Regel führe ich das Backup mindestens einmal in der Woche aus. Eine Erinnerung hierfür erhalte ich von meiner To-Do-App im Smartphone. Habe ich größere Änderungen an meinen Datenbeständen vorgenommen oder wichtige Dinge getan, sichere ich in der Regel auch häufiger.

An das Rotieren der Backupmedien erinnert mich ebenfalls meine To-Do-App.

Die Wartung des Backups führe ich einmal im Monat durch, sodass jedes Backupmedium alle drei Monate gewartet wird. Das umfasst zunächst das Bereinigen von Snapshots und die anschließende Prüfung auf Fehler. Zeitlich ist dies problemlos parallel zu einem Home-Office-Tag durchführbar.

Ausblick

Zunächst bin ich sehr zufrieden mit der aktuellen Lösung. Ich traue der Software und dem Prozess zu, meine Daten zuverlässig zu sichern und im Ernstfall wiederherzustellen. Letztendlich ist es ein großer Schritt von meinem zuvor nur chaotisch durchgeführten Backup.

Ein Punkt, den ich in Zukunft gerne in Angriff nehmen möchte, ist die Automatisierung meines Backups. Die regelmäßige Durchführung kann grundsätzlich resticprofile konfigurieren. Dazu muss jedoch das Backupmedium ständig verfügbar sein. Das kann etwa durch meinen (dann ständig laufenden) NAS im Heimnetzwerk oder ein kostenpflichtiges Cloud-Angebot erreicht werden.

Weiterhin sollte ich versuchen, meine zu sichernden Systeme und das Backup zuverlässig zu trennen. Sollte mein Notebook eines Tages mit Malware infiziert sein, könnte das Backup auf der direkt angeschlossenen externen Festplatte problemlos korrumpiert werden. Eine Lösung hierfür könnte der restic Rest Server. Dieser lässt sich auf einem isolierten System starten und erlaubt dann im "append-only" Modus nur das Hinzufügen von Daten zum Backup. Damit unterbindet er gleichzeitig das Löschen oder Modifizieren vorhandener Daten.

Schlussendlich würde ich mir doch noch eine Fehlerkorrektur für das Backup wünschen. Diese ist aktuell nicht durch das restic-Team priorisiert. Eventuell kann man hier eine eigene Lösung schaffen.