Surasto Backup-Station


Neben den regelmäßigen Backups unseres NAS (Network Attached Storage) mache ich von Zeit zu Zeit ein Backup auf eine externe Festplatte, die nicht immer an Stromnetz und LAN hängt, damit sie nicht von Bilzeinschlägen o.ä. zerstört werden kann.
Dazu habe ich immer das letzte Sicherungsdatum auf ein Etikett auf der Festplatte geschrieben.

Dieses Projekt automatisiert das Sichern und ersetzt das Aufschreiben durch ePaper, so dass man auch im abgeschalteten Zustand das letzte Sicherungsdatum sieht mit ein paar Statistiken.

Bild "Elektronik:Backup-Station_Titel.jpg"

Mechanik

Ein uraltes Gehäuse eines 5.25" Floppydisklaufwerks war die ideale Verpackung. Allerdings musste ein großes Fenster für das ePaper-Display hineingeschnitten werden.

Bild "Elektronik:Backup-Station_Flex.jpg"

Das ging am einfachsten mit einer Mini-Flex.

Bild "Elektronik:Backup-Station_Montagerahmen.jpg"

Das 4.2inch ePaper Display von Waveshare wird von einem 3D-gedruckten Rahmen gehalten, den ich mit 5-Minuten-Epoxy eingeklebt habe.

Bild "Elektronik:Backup-Station_Display1.jpg"

Dadurch sitzt das Display unmittelbar unter dem Blech. Mit den mitgelieferten Messingabstandhaltern wäre es zu tief gewesen.

Bild "Elektronik:Backup-Station_Display2.jpg"

Die Blechkante verschwindet unter einem gedruckten Rahmen.

Bild "Elektronik:Backup-Station_Kabel.jpg"

Für die Kabel habe ich vorhandene Aussparungen in der Rückwand verwendet und dafür passende Zugentlastungen aus PLA gedruckt.

Bild "Elektronik:Backup-Station_Frontplatte1.jpg"

Die Frontplatte besteht aus kupferbeschichtetem RF4 (genausogut hätte es auch eine Aluplatte getan). Diese habe ich mit Autolack gespritzt und dann mit den traditionellen Transferbuchstaben beschriftet. Eine Schicht Klarlack macht die Buchstaben dann abriebfest.

Bild "Elektronik:Backup-Station_Frontplatte2.jpg"

Die LED links wird nach dem Booten eingeschaltet, um anzuzeigen, dass der Backupvorgang läuft.
Nach dem Backup fährt der Raspi herunter. Mit dem Taster kann er wieder gestartet werden.
Nur, wenn der Kippschalter auf "Backup" steht, wird der Backup-Prozess gestartet, so kann man sich auch einloggen, ohne dass parallel der Backup-Prozess läuft.

Die Elektronik

Ich verwende einen alten RasperryPi 2B, der für diesen einfachen Job schnell genug ist. Der Backup läuft über Nacht und muss durch seine inkrementelle Arbeitsweise nicht sehr viele Daten bewegen.

Bild "Elektronik:Backup-Station_Verdrahtung.jpg"

Hier sieht man die komplette Verdrahtung. Lediglich die externe USB-Platte ist nicht angeschlossen. Diese wird über einen der USB-2 Ports betrieben. Wichtig ist, dass ein 2.5A Netzteil verwendet wird, da Raspi und Festplatte davon versorgt werden.

Bild "Elektronik:Backup-Station_RaspiStecker.png"

Bild "Elektronik:Backup-Station-ePaperPins.png"

Die Software

Ich verwende rdiff-backup, das sich per apt-get install aus dem Repository des Raspis installieren lässt. Dabei läuft rdiff-backup in seiner einfachsten Form:
Der Raspi mountet die zu sichernden Netzwerkverzeichnisse und wendet rdiff-backup auf diese an.

Das Schöne an rdiff-backup ist, dass es die Dateien unverändert in der originalen Verzeichnisstruktur auf die Backup-Platte kopiert. Was sich seit dem letzten Backup nicht verändert hat, wird nicht kopiert. Veränderungen werden in einer History gespeichert, so dass man auf einen früheren Zustand zurückrollen kann, wenn man etwas versehentlich gelöscht hat.  
Es gibt keine proprietären Container, die man nicht mehr lesen kann, wenn die originale Backup-Software irgendwann nicht mehr läuft.

Hier ein Beispiel der /etc/fstab, in der die mounts definiert werden:

/dev/sda1 /mnt/ext_hdd ntfs rw 0 0
//ReadyNAS.fritz.box/Documents /mnt/network/Documents cifs uid=root,file_mode=0777,dir_mode=0777,credentials=/etc/samba/credentials
//ReadyNAS.fritz.box/Pictures /mnt/network/Pictures cifs uid=root,file_mode=0777,dir_mode=0777,credentials=/etc/samba/credentials
//ReadyNAS.fritz.box/Videos /mnt/network/Videos cifs uid=root,file_mode=0777,dir_mode=0777,credentials=/etc/samba/credentials
//ReadyNAS.fritz.box/Ralf-Data /mnt/network/Ralf-Data cifs uid=root,file_mode=0777,dir_mode=0777,credentials=/etc/samba/credentials


Damit der Zugriff funktioniert, müssen login und password in einer credentials-Datei gespeichert werden. Hier liegt sie im Verzeichnis /etc/samba/
Außerdem müssen die Verzeichnisse in /mnt/network/ mit den selben Namen angelegt werden, wie sie hier in der fstab bezeichnet sind.

Das eigentliche Backup-Skript ist in Python geschrieben. Sofern man dort das richtige Verzeichniss angegeben hat, in das die Netwerkverzeichnisse gemounted werden, findet das Python-Skipt selbst heraus, was es zu sichern hat.

Da das Skript auf die GPIO-Pins des Raspi zugreifen muss, braucht es die Library wiringPi. Diese installiert man mit:
pip3 install wiringpi

Damit der Backup automatisch beim Einschalten startet, legt man hierzu einen service im initd-System an:

1.  sudo cp backup-py.service /etc/systemd/system/backup-py.service
2.  sudo systemctl enable backup-py.service


Damit der Boot-Taster funktioniert, muss dieser noch in der Firmware des Raspberry Pi aktiviert werden. Hierzu muss diese neue Befehlszeile in die Datei /boot/config.txt eingefügt werden:
dtoverlay=gpio-shutdown,gpio_pin=3, active_low=1,gpio_pull=up

Download und Links

Download CAD Dateien für die 3D-Druckteile
Backup-Station-stl.zip

Download Raspi-Verzeichnis mit Backup-Skript und Initd Service Dateien
Backup-Station_RaspiVerzeichnisMinimal.zip

WaveShare ePaper
https://www.waveshare.com/wiki/4.2inch_e-Paper_Module_Manual#Users_Guides_of_Raspberry_Pi

rdiff-backup
https://rdiff-backup.net/

Boot-Taster am RaspberryPi
https://bitreporter.de/raspberrypi/richtiger-an-ausschalter-fur-den-raspberry-pi/