Robins Blog – Technik und Multimedia

Raspberry Pi: Sichern und Wiederherstellen von Daten auf dem Raspberry PI – Rsync Backup Restore mit Synology als Host

Raspberry Pi mit offenem Gehäuse und WLAN-Nano-Stick, klicken um zu vergrößern

Raspberry Pi mit offenem Gehäuse und WLAN-Nano-Stick, klicken um zu vergrößern

Lag bei Euch ein Raspberry Pi mit vielen Zubehör dieses Jahr unter dem Weihnachtsbaum? Jetzt wollt ihr womöglich XBMC draufspielen oder in Do-it-Yourself-Manier einen Hausautomations-Server mit dem Raspberry Pi und Fhem aufbauen? Glückwunsch, einen gute Entscheidung, zumindest kauft ihr dann nichts von der Stange und ihr seid kreativ.
Weil ich ja ständig mit irgendwelchen Modulen und Erweiterungen am Basteln bin, mache ich natürlich Fehler. Da sitzt man schon mal eine Nacht dran und wundert sich warum dieser und jener Cron-Job nicht funktioniert, weil man nicht weiß, das man in dem Job keine “ “ verwenden darf. Ok, ziemlich nervig aber man lernt ja nie aus.
Zurück zum Thema: Backup und Restore – Speichern und Wiederherstellen, ich habe mich im Internet umgesehen und verschiedenes getestet.


Der einfachste Fall, um Eure Raspberry-Pi Karte zu sichern ist sicherlich der Win32DiskImager. Also Pi runterfahren, Karte rausnehmen, unter Windows den Win32DiskImager starten, sichern gut is. Ich hatte damals kurz über den Win32DiskImager gebloggt.
Das ist mich nicht die eleganteste Lösung, da ich meinen Raspberry Pi unter Fhem im 24/7 Modus laufen habe und das Gerät hinter dem TV-Gerät versteckt ist.
Eine weitere Methode ist der Linux Befehl dd. Hier habe ich auch etwas herumexperimentiert. Vorteil von DD ist, das er im Gegensatz nur Dateien sichert und nicht ein Image der SD-Karte. Will heißen: Wenn die Karte mit 4GB betankt ist aber eine 16GB Karte ist, würde der Win32DiskImage 16GB vollmachen, DD nur 4GB.
Die dritte Methode finde ich am besten, weil automatisiert, einfach zu bedienen und das Widerherstellen 🙂 funktioniert auch tadellos:

Die ganze Geschichte nennt sich Rsync und ist vermutlich auch einer der weit verbreitesten Methoden.

Hierzu nehme ich meine Synology DS212+ (siehe Erfahrungsbericht) als Datenspeicher. Es wird jede nach über die Aufgabenverwaltung ein Script ausgeführt und so die gesamte SD-Karte des Raspberry Pi gesichert. Dabei fahre ich noch nicht einmal während des Backup-Vorgangs die Dienste, wie Apache, XMBC oder Fhem herunter. Klappt bei mir auch so.

Backup: Den Aufgabenplaner findet ihr bei der Synology und Systemsteuerung – Aufgabenplaner. Hier legt ihr eine Aufgabe mit Erstellen – Benutzerdefiniertes Script an mit Datum und dem folgenden Script:

/usr/syno/bin/rsync -avz --delete --exclude-from=/volume1/RPiBackup/_scripts/rsync-exclude.txt -e "ssh -p 22" root@192.168.178.7:/ /volume1/RPiBackup/rasplive/$(date +%Y%m%d)rasplive/ >> /volume1/RPiBackup/rasplive/$(date +%Y%m%d)rasplive_backup.log 2>&1

Dieses Script greift zum vorgeschriebenen Zeitplan via SSH Port 22 auf die IP-Adresse meines Raspberry-Pi (192.168.178.7) und kopiert die Daten in das Verzeichnis /volume1/RPiBackup/rasplive[heutiges Datum]. Ebenfalls schreibt er ein Log (rasplive_backup.log) in das Verzeichnis. Die datei exclude enthalten die Ordner, welche nicht gesichert werden, bei mir

/proc/*
/sys/*
/dev/*
/boot/*
/tmp/*
/run/*
/mnt/*

Wichtig: Um automatisiert (hier via Cron-Job) auf den Raspberry Pi zuzugreifen müsst ihr eine ID-RSA auf dem Pi kopieren, sonst kommt während der Scriptausführung eine Passwort-Aufforderung.

Generierung ID_RSA Key:  Hierzu müsst ihr auf Eurer NAS mit ssh-keygen -t rsa einen public Key erzeugen. Dieses öffentlichen Schlüssel id_rsa.pub kopiert ihr auf den Raspberry Pi. Im allgemeinen kann man den ssh-copy-id [parameter] benutzen, hat bei mir aber nicht geklappt und habe den id_rsa.pub key manuell auf den Raspberry Pi gebeamt, also mit cat id_rsa.pub >> authorized_keys. 

[asa]B008PT4GGC[/asa]

Das Ergebnis sieht dann nach einigen Tagen so aus. Es werden zu einem bestimmten Zeitpunkt alle Dateien der SD-Karte gesichert (nicht enthalten ist die Windows-Partition).

Man sollte aber trotzdem eine (ältere) IMG-Datei vorliegen haben, damit man eine ggf. defekte Karte wieder zurückgespielt bekommt.

Restore: Jetzt kommt eigentlich der interessante Teil, der auf den meisten Internet-Seiten zu diesem Thema immer stiefmütterlich behandelt wird. Das Wiederherstellen von Daten. Hier benutze ich auch Rsync und gehe mit SSH auf die Synology.

[asa]B00G6AX604[/asa]

Dann führe ich folgenden Befehl auf der Konsole aus:

sudo /usr/syno/bin/rsync -avz --delete --exclude-from=/volume1/RPiBackup/_scripts/rsync-exclude.txt -e "ssh -p 22" /volume1/RPiBackup/rasplive/20131225rasplive/ root@192.168.178.7:/

Auch hier eine Kurzerklärung: Schreibe mir alle neue Dateien (die alten werden gelöscht) vom Pfad der Synology /volume1/RPiBackup/rasplive/20131225rasplive auf die SD-Karte (IP: 192.168.178.7).
Wenn das Zurückspielen funktioniert, rappeln in der Konsole die Dateien in einem Schwung herunter. Wenn alles aktualisiert ist, einfach das Konsolenfenster wieder schließen.

Anschließend mit der IP auf dem Raspberry Pi einloggen / oder stecker ziehen und neu starten, Fertig!

Möglicherweise gibt es noch elegantere Methoden, dann einfach hier in den Kommentaren schreiben.

Die mobile Version verlassen