Die Backup-Station
Die eigenen Daten regelmäßig zu sichern ist wichtig, aber meist zu lästig, um es wirklich gewissenhaft zu tun. Diese portable Backup-Station muss man nur einstecken, dann passiert der Rest automatisch. Und auch wenn sie ausgeschaltet ist, zeigt ein kurzer Blick auf das integrierte ePaper-Display, ob schon wieder Backup-Zeit ist.
Über die Jahre sammeln sich selbst in einer durchschnittlichen Familie Terabytes an Daten auf den verschiedenen Rechnern an. Um diese für alle zugänglich zu machen, ist ein NAS (Network Attached Storage) nützlich, was nebenbei auch die zentrale Datensicherung deutlich erleichtert. Hierbei hat sich die 3-2-1-Regel bewährt, nach der jede Datei dreimal vorhanden ist, indem von den Originaldaten zwei Kopien auf unterschiedlichen Medien gemacht werden, von denen eine außer Haus lagern sollte. Ich beschreibe hier einen Ansatz, eine lokale Kopie der Daten auf einer externen Festplatte mit wenig Aufwand zu pflegen.
Unser NAS wird regelmäßig per LAN auf eine Festplatte kopiert und daneben auch verschlüsselt in der Cloud gespeichert. Da eine automatische Sicherung auf der Festplatte erfordern würde, dass diese auch immer im lokalen Netz hängt, würde sie z. B. bei einer Überspannung durch Blitzeinschlag gemeinsam mit dem NAS das Zeitliche segnen.
Ich fühle mich wohler mit einer externen Platte, die ich nur gelegentlich anschließe. Die ist zwar nicht immer hundertprozentig aktuell, aber ich kann sie irgendwo sicher verstauen. Nachdem ich das einige Zeit lang gemacht und dabei das jeweils letzte Sicherungsdatum auf einem Aufkleber auf der Festplatte vermerkt hatte, musste was Automatisiertes her.
Die eigentliche Idee zu diesem Projekt startete übrigens nicht mit dem oben beschriebenen Problem, sondern mit der Lösung, die nach einem Problem suchte – wie so oft bei meinen Projekten. Auf einer Maker Faire hatte ich im Affekt ein ePaper-Display gekauft, das noch auf einen Einsatzzweck wartete, und ein älterer Raspberry Pi 2 lag auch noch herum. Zusammen mit einem Metallgehäuse aus der Restekiste und einer neu beschafften 4-Terabyte-USB-HDD entstand so die Backup-Station, die das Datum des letzten Backups und ein paar statistische Daten auf dem ePaper festhält und auch nach dem Ausschalten weiter anzeigt, was die bisherige Zettelwirtschaft ersetzt.
Backup kinderleicht
Für die regelmäßigen Datensicherungen beschränkt sich die Bedienung der Backup-Station darauf, das LAN-Kabel und das Netzteil einzustecken. Die Backup-Station startet dann automatisch, erledigt die Datensicherung, schreibt alles auf das permanente Display und schaltet sich nach getaner Arbeit wieder ab. So einfach wie die Bedienung der Geräte aus Cupertino – zumindest ist das deren Ruf.
Entsprechend minimalistisch ist die Frontplatte gestaltet. Die LED leuchtet, sobald der Backup-Vorgang startet und schaltet sich ab, wenn alles erledigt ist. Es gibt einen Einschalttaster, mit dem man den Raspi nach dem automatischen Herunterfahren wieder starten kann, solange das Netzteil noch eingesteckt ist. Aber eigentlich entspricht das nicht dem Use-Model, denn üblicherweise verschwindet die Box nach getaner Arbeit wieder in einer Schublade und startet beim nächsten Einstecken wieder automatisch. Somit kann man diesen Taster auch weglassen. Unverzichtbar ist hingegen der Schalter Backup/Login, der den Modus der Box steuert. Stellt man ihn auf Login, dann startet beim Einstecken kein Backup-Vorgang und es gibt vor allem keinen automatischen Shutdown. Diesen Modus braucht man, wenn man ein Backup zurückkopieren will oder etwas am Setup ändern möchte.
Wahl des Backup-Werkzeugs
Es gibt allerlei Backup-Programme, die die Daten in einem proprietären Datenformat speichern und sich um Versionierung und Historie der Daten kümmern. Das ist sehr praktisch, erzeugt aber eine Abhängigkeit von genau diesem Tool, das vielleicht in der nächsten Version des Betriebssystems nicht mehr läuft oder aus anderen Gründen den Zugang zu den gespeicherten Schätzen verweigert.
Ich bevorzuge den konservativen Ansatz, bei dem die Daten unverändert in der originalen Verzeichnisstruktur als einzelne Dateien gespeichert werden. Auf eine Versionierung der Backups möchte ich dabei aber trotzdem nicht verzichten. Sollte ich versehentlich etwas gelöscht oder überschrieben haben, oder im schlimmsten Fall sich irgendeine Ransomware durch die Daten gefressen haben, möchte ich in der Lage sein, auf eine ältere Version zurückspringen zu können.
Mit rdiff-backup gibt es in jeder Linux-Distribution ein Standardwerkzeug, das beides vereint: originale Verzeichnisstruktur mit Einzeldateien und eine Historie der Backups. Die Verzeichnisse auf dem Backup-Medium sehen dann zum Beispiel aus wie im Kasten.
Jedes dieser Verzeichnisse enthält exakte Kopien der Originaldaten. Solange man nur die letzte Version wieder herstellen möchte, reicht ein einfaches Kopieren dieser Verzeichnisse. Zusätzlich erstellt rdiff-backup auf dem Backup-Drive ein Verzeichnis rdiff-backup-data, das alle inkrementellen Änderungen der Daten erfasst. Diese Daten werden gebraucht, wenn eine ältere Version der Datensicherung wieder hergestellt werden soll. Der Inhalt sieht z. B. so aus wie im Kasten.
Für diesen Inhalt braucht man sich allerdings nicht weiter zu interessieren, da zurückliegende Versionen per rdiff-backup wieder daraus hervorgeholt werden. Der Befehl
rdiff-backup -l backup-verzeichnis/ unterverzeichnis
listet zum Beispiel alle alten Versionen dieses Unterverzeichnisses auf. Man kann sich dann entscheiden, welche davon wieder hergestellt werden soll. Mehr Details zur Benutzung des Tools bekommt man – so wie bei vielen Linux-Kommandozeilen-Tools – mit
man rdiff-backup
Weitere Informationen findet man auch auf der Projektseite (siehe Link in der Kurzinfo).
Da auch das Raspberry Pi OS eine Linux-Distribution ist, lässt sich rdiff-backup aus der Kommandozeile aus dem Repository installieren:
sudo apt-get install rdiff-backup
Was ist in der Box?
Der ganze Hardware-Aufbau besteht aus den folgenden vier Hauptkomponenten:
- Raspberry Pi (eine ältere Version reicht aus)
- USB-Festplatte am USB-Port des Raspberrys
- ePaper-Display
- USB-Steckernetzteil, das den Raspi und die Festplatte versorgt.
Die Festplatte sollte großzügig dimensioniert werden. Besonders, wenn viele Dateien oft geändert werden, legt rdiff-backup zusätzlich viele Versionsdaten an. Es wird also mehr Platz gebraucht, als auf dem NAS an Daten gespeichert ist.
Geduld beim Start
Ich verwende den Ethernet-Anschluss des Raspberry Pis für den Anschluss an mein Netzwerk. WLAN ist auch eine Option, reduziert aber die Datenrate noch einmal deutlich. Selbst bei dem 100-Base-T-LAN – mehr bekommt man nicht bei einem älteren Raspi – dauert der erste Lauf des Backups einige Tage bei einem NAS mit 2 Terabyte. Aber man muss ja nicht daneben sitzen bleiben. Bei den folgenden inkrementellen Sicherungen geht es dann viel schneller, weil ja nur noch neue Daten und Änderungen über das Kabel wandern müssen. Bei mir ist das üblicherweise in weniger als einer halben Stunde erledigt.
Wem das alles zu langsam geht, wählt eine Raspi-Alternative mit Gigabit-Ethernet. Eine Auswahl solcher Alternativen wurden in Make 3/22 vorgestellt (siehe Kurzinfo). Damit sich das lohnt, sollte dann natürlich auch die NAS-Box ebenfalls so schnell sein.
Ran ans Blech
Nach so vielen Vorüberlegungen und Theorie freue ich mich immer über handfeste Arbeit an der Hardware. Mein solides Metallgehäuse hat vor vielen Jahren mal ein 5¼-Zoll-Floppydisk-Laufwerk beherbergt. Mit der Trennscheibe entstand das Fenster für das ePaper-Display. Hier hat sich die Akkutrennscheibe bewährt, der beliebte Dremel hat sich an dem dicken Blech die Scheibe ausgebissen. Bei solchen Arbeiten ist eine Schutzbrille Pflicht.
Es ist keine ultimative Präzision gefordert, weil der Rand hinter einer Blende verschwindet, die ich auf dem 3D-Drucker gefertigt habe. Hier kann man natürlich beliebig kreativ werden – wie wäre es zum Beispiel mit einer Steampunk-Version im Mahagonigehäuse und Messingrahmen um das Display?
Die originalen Kabeldurchführungen des alten Gehäuses konnte ich nicht verwenden. Auch hier half der 3D-Drucker, die passenden Teile für das LAN-Kabel und das Steckernetzteil herzustellen.
Die übersichtliche Frontplatte enthält nur die eingangs beschriebenen Elemente LED, Taster und Schalter. Den Taster kann man auch weglassen – falls man doch mal direkt nach einem Backup die Station neu starten will, muss man dann eben den Netzstecker einmal ziehen und wieder einstecken. Auch die LED könnte man sich theoretisch sparen, weil man ja am ePaper-Display sieht, ob das Backup fertig ist. Allerdings erlischt die LED erst, wenn der Raspi komplett heruntergefahren ist. Dann kann man den Stecker gefahrlos ziehen.
Für die Beschriftung der Frontplatte kam 80er-Jahre-Technologie zum Einsatz: Transferbuchstaben, die man mit einem Kugelschreiber aufrubbelt. Eine Schicht Klarlack darüber sorgt dafür, dass die Beschriftung abriebfest wird. Wer keine Rubbelbuchstaben mehr hat, kann sich auch selber Aufkleber machen wie in Make 1/23 auf S. 98 beschrieben.
Verdrahtung
Die wesentlichen Schnittstellen für die Daten sind der USB-Port für die Festplatte und die LAN-Verbindung. Ich habe das LAN-Kabel mit einer Zugentlastung zusammen mit dem Steckernetzteil hinten aus der Box heraushängen lassen. Man könnte alternativ den Raspberry Pi auch so platzieren, dass die LAN-Buchse hinten am Gehäuse durch eine Öffnung erreichbar wird.
Damit alles einfach montierbar ist, habe ich Raspi und Display in die Oberschale des Gehäuses montiert. Nur die Festplatte sitzt auf der Unterseite, sodass man beim Öffnen des Gehäuses nur die USB-Stecker ziehen muss.
Die Befestigungsrahmen für das Display und den Raspberry Pi entstammen dem 3D-Drucker. Die Druckdaten – wie auch die nötigen Skripte – gibt es über die Kurz-URL in der Kurzinfo zum Download.
Die Rahmen aus PLA und die Frontplatte aus Platinenmaterial habe ich mit 5-Minuten-Epoxy auf das Blech geklebt.
Als Display habe ich das 4.2 Inch ePaper Module der Firma Waveshare verwendet. Da sich der Controller auf dem Modul befindet, kann der Raspberry Pi über SPI mit nur wenigen Leitungen die Anzeige steuern. Das Modul wird mit einem Anschlusskabel geliefert, dessen Adern Maker-freundlich mit Einzelsteckern ausgerüstet sind, die auf die Pfostenleiste des Raspis verteilt werden können. Die Zuordnung zu den SPI-Signalen ist auf das Modul aufgedruckt. Das Bild zeigt die entsprechenden Pins der Stiftleiste des Raspberry Pi, auf die die Kabel gesteckt werden. Hier sind auch die Verbindungen zum Modus-Kippschalter, Taster und der LED gezeigt.
Software
Wenn man den Raspberry Pi bei der Installation so konfiguriert, dass die grafische Oberfläche gestartet wird, dann kann man Monitor und Tastatur anschließen und ihn für die Einrichtung wie einen normalen Computer benutzen. Zum Beispiel lässt sich so ganz komfortabel die Software dieses Projekts (siehe Kurzinfo-Link) per Dateibrowser aus dem Netzwerk oder vom USB-Stick kopieren.
Da später im täglichen Gebrauch natürlich weder Tastatur noch Monitor an die Kiste angeschlossen werden sollen, beschreibe ich hier aber auch schon den Installationsvorgang auf der Kommandozeile.
Hierzu startet man den Raspi mit verbundenem LAN-Kabel. So erhält er eine IP-Adresse im Heimnetz, die zum Beispiel 192.168.178.38 lauten könnte und die man etwa über die Konfigurationsseite seines Routers erfährt. Unter dieser Adresse ist er nun per Terminal von einem anderen Computer aus benutzbar. Mit
ssh pi@192.168.178.38
baut dieser eine Terminalverbindung zum Raspberry Pi auf.
Die Frage nach dem Passwort beantwortet man dann mit „raspberry“, wenn man bei der Einrichtung nichts anderes gewählt hat. Achtung: Es kann vorkommen, dass der Raspi eine amerikanische Tastatur erwartet. Dann lautet das Passwort „raspberrz“.
Nun befinden wir uns im Raspi in einem Terminalfenster.
Nun braucht der Raspi Zugriff auf die Laufwerke, die er sichern soll. Bei uns verteilen sich die Daten nach Thema auf verschiedene Netzwerklaufwerke. Damit diese beim Start unserer Backup-Kiste jedes Mal „gemounted“ werden, trägt man sie zum Beispiel mit dem Texteditor nano in die Datei /etc/fstab ein. Deren Inhalt kann dann etwa wie im Screenshot aussehen.
In der Datei /etc/samba/credentials gibt man jeweils den Login-Namen und das Passwort für die Netzwerklaufwerke an. Die Zeile
/dev/sda1 /mnt/ext_hdd ntfs rw 0 0
bindet die Backup-Festplatte aus unserer Backup-Box ein. Nun legt man die Verzeichnisse mit genau denselben Namen an, wie wir sie in der fstab definiert haben, also zum Beispiel mittels:
sudo mkdir /mnt/ext_hdd
Nach einem Neustart oder dem Befehl mount -a sollten sich jetzt in diesem Beispiel die vier Netzwerklaufwerke und die USB-Harddisk und ihr Inhalt im Verzeichnis /mnt finden.
Es fehlt noch das eigentliche Python-Skript, dass das Backup ausführt und das ePaper-Display beschreibt. Kopiert man die Zip-Datei aus dem Link zu diesem Artikel auf eins der oben gemounteten Netzwerk-Drives, so kann man sie ganz einfach von dort nach /home/pi auf dem Raspi kopieren und dort auspacken mit
unzip backup-py.zip
Da das Skript über die GPIO-Pins die Schalter abfragt und die LED schaltet, benötigt es die Bibliothek Wiring Pi, die jetzt noch manuell nachinstalliert werden muss:
pip3 install wiringpi
Ein manueller Start sollte jetzt schon funktionieren mit
cd backup-py ./backup_ctrl
Wenn die Verzeichnisse wie oben in /mnt liegen, dann findet das Skript selbst heraus, was es zu sichern gibt und legt einfach los. Es muss nichts mehr konfiguriert werden.
Achtung: Wenn der Schalter auf der Frontplatte jetzt auf Backup und nicht auf Login geschaltet ist, dann fährt der Raspi nach Ausführung des Skripts herunter!
Es fehlt ein letzter Schritt, der dafür sorgt, dass das Backup-Skript bei jedem Start des Raspberry Pis automatisch gestartet wird. Dazu legt man es als Service an:
sudo cp backup-py.service /etc/systemd/system/backup-py. service sudo systemctl enable backup-py.service
Bitte dabei die eingerückten Zeilen direkt an die Zeile davor anhängen. Auf den Inhalt des Python-Skripts gehe ich hier nicht näher ein, da es ein ziemlich linearer Ablauf ist, der hoffentlich durch die Kommentare im Code so gut dokumentiert ist, dass Nachbauer auf einfache Weise auch eigene Anpassungen und Verbesserungen machen können.
Wer den optionalen Startknopf verwenden will und an die entsprechenden Pins der Raspi-Stiftleiste angeschlossen hat, muss den Knopf noch durch folgenden Eintrag in die Datei /boot/config.txt aktivieren (ohne Leerzeichen in eine Zeile schreiben):
dtoverlay=gpio-shutdown,gpio_pin=3, active_low=1,gpio_pull=up
Ran an die Daten
Mit der Backup-Station wurde bei mir Datensicherung zur Routine. Auf dem ePaper sehe ich jederzeit, wann ich diese das letzte Mal gemacht habe. Nach der Sicherung erhalte ich auch eine grobe Statistik, die zeigt, wie viele Dateien geändert, gelöscht oder neu hinzugenommen wurden. Wenn das sehr viele sind, ist das ein deutliches Zeichen, dass ich die Box öfter anschließen sollte.
Auch wenn die Daten alle in der originalen Struktur auf der Backup-Festplatte liegen, lohnt sich die Simulation des Ernstfalls – das gilt übrigens generell für alle Backup-Strategien. Schaltet dazu den Schalter auf der Frontplatte auf Login und logt Euch per ssh auf dem Raspi in der Station ein und probiert aus, die letzte oder eine ältere Version der Daten auf eine andere Festplatte zurückzukopieren. Alternativ kann man das Gehäuse auch öffnen, die Festplatte abstecken und direkt an die USB-Schnittstelle eines anderen Rechners anschließen, um auf die Sicherungskopien zuzugreifen; es muss nicht unbedingt über das Netzwerk sein. Aber klar, hier ist noch Raum für Verbesserungen der Usability.
Im Umkehrschluss bedeutet das natürlich: Wer die Festplatte aus der Box in der Hand hat, kann auf die Daten zugreifen. Wer das verhindern will, sollte die Backup-Festplatte verschlüsseln. —pek