Das perfekte Backup
Das ist natürlich subjektiv. Es hängt ab von Ihren persönlichen Bedürfnissen. Ich habe folgende Voraussetzungen:
- Ich habe einen Raspberry Pi 5 als Homeserver
- Meine Clients sind ausschließlich Windows PCs
Für mich habe ich das folgende Verfahren entwickelt:
- Ich sichere meine Daten auf Standard-Festplatten im USB-Dock (keine Streamer, Tape-Libraries etc.) Das ist schlicht die billigste Methode.
- Da meine Clients ausschließlich Windows PCs sind, sichere ich sie auf Shares-Ebene, d.h. jedes Root-Verzeichnis, das meine Windows-Clients auf dem NAS sehen, separat (aber durchaus auch mehrere oder alle auf einer Disk)
- Aber auch die Linux-Umgebung muss gesichert werden um sie bei einem katastrophalen Versagen nicht von Grund auf neu einrichten zu müssen.
Ich sichere diese ausschließlich in einem vorausgehenden Schritt direkt auf das NAS. - Ich benutze die Hardware-Vorraussetzungen wie in meinem Artikel Raspberry Pi GreenNas beschrieben. Die Skripte unter Downloads verwenden die hardwaremäßigen Erweiterungen.
Die Ausgangslage
Ich habe einen Server, der für alles zuständig ist. Die 1 TB-Server-Platte (SSD) samt Home-Verzeichnisse und andere des täglichen Gebrauchs ist 24/7 online. NAS und Backup-Platte werden automatisch bei Bedarf zugeschaltet und gemounted und sind für alle Skripte erreichbar.
Auf meiner Serverplatte habe ich eine verschlüsselte Partition (die relativ groß ist). Um sie nicht jedesmal per dd kopieren zu müssen, wird sie auf der Backup-Platte gemounted und nur auf Datei-Ebene synchronisiert. Dazu ist beim Backup die Eingabe des Passworts nötig, so das dieses nicht automatisiert (z.B. über Nacht) durchgeführt werden kann.
Alle anderen Daten liegen, sowohl auf dem Server als auch auf den Backup-Platten, unverschlüsselt vor. Sie enthalten nichts kompromittierendes oder peinliches und das Risiko eines (Total-) Verlustes wegen Schlüsselproblemen schätze ich höher ein, als dass sie in fremde Hände kommen könnten.
Wenn Sie Ihre Backup-Platten generell verschlüsseln möchten, müssen Sie das selbst realisieren. Auf dem Server sind die Daten sowieso permanent lesbar gemounted, da würde es keinen Vorteil bringen, beim Booten ein Passwort eingeben zu müssen.
Die Backup-Platte kann kleiner sein als das NAS plus der Server. Dazu muss sie jedes zu sichernde Share bereits enthalten (zumindest als leeres Verzeichnis). So kann man übrig gebliebene Festplatten als Backup-Medium für Shares, die eben draufpassen, nutzen.
Deshalb ist es ratsam, jedes Backup zu protokollieren. Ich mache das automatisiert im Backup-Skript in einer Datenbank. So kann ich jederzeit sehen, auf welcher Platte die aktuellste Sicherung eines Shares zu finden ist bzw. auch, welche Shares schon länger nicht mehr gesichert wurden, was ich dann demnächst nachholen müsste.
Die Backup-Platte wird dabei über ihre UUID identifiziert, hat in der Datenbank einen eindeutigen Namen (das Filesystem-Label) und ist mit diesem (sowie zur Sicherheit auch mit der UUID) beschriftet.
Das Backup
... erfolgt nach meinem Schema in zwei Schritten:
Das Skript backup.pl
sichert die SSD auf der NAS-Platte.
Dieses wird meist häufiger aufgerufen und sichert gegen einen Defekt oder
versehentlichem Löschen der SSD. Wenn am Server etwas kaputt geht,
sind die Daten auf der NAS-Platte vollständig vorhanden.
Die NAS-Platte ist um ein mehrfaches größer als die SSD und kann deren Inhalt problemlos aufnehmen.
Das Skript rsyncNas2Backup
schließlich sichert den Inhalt der NAS-Platte,
oder Teile davon, jedes Verzeichnis, das gesichert werden soll,
muss bereits auf der Backup-Platte existieren, sonst wird es übersprungen,
auf eine externe Backup-Platte. Diese wird regelmäßig gewechselt, so dass
mehrere Platten verschiedenen Alters existieren, die nicht online sind
und für ein Restore zur Verfügung stehen.
Die Datenbank
Dieser Abschnitt könnte auch am Schluß stehen, denn die Datenbank ist meist ziemlich unwichtig.
Unwichtig solange, bis man sie braucht!
Natürlich wissen Sie, wo das neueste Backup ist. Aber was ist mit der Festplatte, die im Küchenschrank liegt? Von wann ist die im Kellerregal? Was genau ist da drauf?
Es ist sinnvoll, mehrere Backup-Platten an verschiedenen Stellen im Haus zu verstecken (besser noch, in einem anderen Haus, bei einem Freund oder am Arbeitsplatz), damit ein Einbrecher nicht alle zusammen zum Kilopreis verkaufen kann und Sie vor dem Nichts stehen.
Ich verwende teilweise kleinere (übrig gebliebene) Festplatten, auf die jeweils nur ein Teil des Backups passt. Mithilfe der Datenbank kann ich schnell sehen, welche Shares ich mal wieder sichern müsste und welche Platte dafür geeignet sein könnte.
In meiner Datenbank gibt es dazu zwei Tabellen:
- Eine Tabelle
tMedia
, die jedes bekannte Medium enthält (lokale Festplatten genauso wie Backup-Platten). Jede Partition auf dem Medium muss ein Label besitzen.
Neue, bisher nicht verwendete Backup-Platten werden automatisch erkannt und müssen nicht manuell hinzugefügt werden.
Lokale Änderungen an den Disks können Sie mit backupUpdateMedia eintragen (siehe Downloads).
Das SkriptupdateMediaDB
ermittelt auch Hersteller, Modell, Größe und Seriennummer der Platte, sofern diese Daten verfügbar sind, und trägt diese entsprechend ein. - Eine Tabelle
tBackup
, in der jedes Backup protokolliert wird, d.h. von welchem Medium wann, welches Share auf welches andere Medium gesichert wurde, zusammen mit einem Fehlercode, der zeigt, ob es geklappt hat bzw. warum evtl. auch nicht.
Die Eindeutigkeit der UUIDs ist dabei essentiell! Clonen von Festplatten durch eine simple (dd-) Kopie verbietet sich. Das kann auch an anderer Stelle zu Problemen führen und sollte niemals durchgeführt werden!
UUIDs
Es gibt einige Verwirrung über UUIDs auf Festplatten, deshalb hier eine kurze Zusammenfassung:
- UUID ist die UUID des Dateisystems einer Partition.
- PARTUUID kennzeichnet eindeutig eine Partition der Festplatte.
- PTUUID ist die UUID der Partitionstabelle, also praktisch die UUID der Festplatte. Sie ist für alle Partitionen einer Festplatte gleich.
Backup-Disk
Die Vorbereitung einer neuen Platte beginnt am besten mit GParted. Hier lassen sich am leichtesten die nötigen Schritte bis zur Erstellung der (einzigen) Partition und Formatierung mit EXT4 durchführen.
Setzen Sie noch mit z.B. e2label /dev/sda1 DiskName einen aussagefähigen
Namen, unter dem sie später in der Datenbank auftauchen wird. Dies ist notwendig.
Ein leerer Name (Null
) ist in meiner Datenbank nicht zulässig
und würde einen Fehler beim Einfügen erzeugen!
Mounten Sie die Partition in /backupdisk und erzeugen Sie ein leeres Verzeichnis für jedes Root-Verzeichnis des NAS, das später auf dieser Platte gesichert werden soll.
Ab jetzt steht sie für ein rsyncNas2Backup zur Verfügung.
Die Daten der Platte werden beim ersten Backup automatisch in tMedia eingetragen und auch die Protokollierung der Backups in tBackup erfolgt ohne weiteres Zutun.
Das Restore
Wenn man sich schon die Mühe eines Backups macht, sollte man sich auch überlegen, wie ein Restore, je nach Bedarfsfall, aussehen könnte.
Ein wesentlicher Punkt dabei lautet: warum brauche ich ein Restore?
Dabei gibt es mindestens drei Szenarien:
Versehentliches Löschen
Sie haben also versehentlich irgendwelche Dateien gelöscht oder unbeabsichtigt verändert.
Dieser Fall ist noch ziemlich entspannt. Einfach das NAS aktivieren und die entsprechenden Dateien zurück kopieren. Falls diese auch da schon nicht mehr drauf sind, gibt es hoffentlich eine geeignete ältere Backup-Disk.
Defekt
Der Server oder die SSD ist kaputt gegangen.
Auch das ist noch kein unlösbares Problem, obwohl schon ein bisschen stressig. Tauschen Sie die SSD und/oder den Server und installieren Sie schlimmstenfalls den Server neu. Installieren Sie all die Pakete, die Sie damals auch noch hinzugefügt haben (sicherlich haben Sie das damals irgendwo aufgeschrieben 😉). Kopieren Sie die Dateien in /etc und die sonstigen Dateien vom letzten Backup und alles sollte wieder weitgehend funktionieren.
Virus
Sie haben sich einen Virus eingefangen, der Ihre Daten verschlüsselt hat.
Jetzt haben Sie ein Problem!
Der glücklichste Fall wäre tatsächlich, er steckt in Ihrem Server. Dann können Sie diesen aus einer sicheren Quelle neu installieren, Die Dateien in /etc sowie alle Shares zurück kopieren und alles ist wieder OK.
Aber er kann auch in einem Ihrer Clients sitzen, sich vielleicht schon auf andere weiterverbreitet haben...
Jetzt müssen Sie ihr gesamtes Netz überprüfen, ggf. Neuinstallationen durchführen und aufpassen, dass diese nicht wieder infiziert werden, ich möchte jetzt nicht in Ihrer Haut stecken!
Heben Sie ab jetzt alle ihre Backups auf! Er kann auch schon Wochen- oder Monatelang gelauert haben, ohne sich bemerkbar zu machen, und Wochen nach einem vermeintlich erfolgreichem Restore wieder zuschlagen. Vielleicht ist ein älteres Backup die Rettung!
Verwenden Sie keine Backup-Disks direkt! Machen Sie eine Kopie auf einem sicheren System, sonst könnte er vielleicht auch ältere Backups infizieren!
Proben Sie den Ernstfall
– – – – – – – —
Generalalarm, Generalalarm, Generalalarm, zur Übung
Es kann nicht schaden, den Ernstfall, also das Restore z.B. von einer Backup-Platte auf eine neue NAS-Platte oder vom Backup-Verzeichnis des NAS auf einen neuen PI5 zu testen.
Das ist nicht wirklich teuer (Sie brauchen lediglich eine neue Festplatte
bzw. einen neuen Pi5), aber es verringert späteren Stress,
wenn es wirklich mal ernst
wird!
Und dank dieser Übung haben Sie die Ersatzteile dann schon parat. Denken Sie daran, der Ernstfall wird immer am Freitag Nachmittag eintreten, wenn Sie bis Montag nichts mehr bestellen können...

