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.
Hallo Robin, funktioniert auch 5 Jahre später noch prima, herzlichen Dank.
Meine Herausforderungen waren:
1. Auf dem Raspberry und auf dem Synology root werden und sich auch mit dem pw remote anmelden können.
2. Austausch der public keys.
Lösung bei mir:
cat ~/.ssh/id_rsa.pub |ssh root@192.168.0.xx „cat >> .ssh/authorized_keys“
Aufpassen der .ssh Ordner muss mit den richtigen Rechten im Home Verzeichnis verfügbar sein. Den erzeugt man am besten wenn man sich einmal lokal mit ssh @localhost anmeldet, dann wird alles generiert.
3. Wissen das rsync auf dem raspberry evtl. nicht installiert ist.
Lösung:
apt-get update
apt-get install rsync
Danke für den Block.
Kannst du noch mal genauer den Schritt:
Generierung ID_RSA Key:
Erklären
Danke
Hallo
Ich habe es hin bekommen mit “ sudo passwd root“
dann habe ich ein Passwort vergeben
fertig!
danach konnte ich die Dateien löschen.
Wenn ich auf den alten Stand zurück möchte, also kein Passwort für den
User root muß ich dann sudo passwd root eingeben und anschließend die
Passwort Eingabe frei lassen und mit Enter bestätigen?
Danke Robin
werde ich mal probieren
Lg Friedrich
Hall Friedrich,
melde ich per SSH auf der Konsole an und mache dich zum Root, dann hast du alle Rechte: http://askubuntu.com/questions/91598/how-do-i-login-as-root
oder in WinSCP als Root anmelden, geht dann auch.
LG
/robin
Hallo
ich habe nach und nach mehrere Backups erstellt die sind jetzt auf meinem Raspi im Ordner backup
ich möchte die alten Backups löschen, geht aber nicht Fehlermeldung
rm: cannot remove `FHEM-20150904_185840.tar.gz‘: Permission denied.
habe wohl keine schreibrechte !
wie kann ich diese tar.gz Dateien löschen ?
ich benutze WinSCP für den Zugriff auf das Raspi Dateisystem.
Hallo, ich finde deine Beitrag sehr interessant.
Leider habe ich mit dem erzeugen und verschieben des ID-RSA meine Probleme.
Könntest du etwas ausführlicher erklären?
@Chris,
id_rsa.pub ausführlicher dargestellt.
LG
/robin
Hallo Chris,
danke für die Blumen.
a) ID-RSA kann ich noch mal ausführlicher schreiben, ich dachte der Link wäre anschaulich genug.
b) Mein Pi ist nicht im Internet, ich komme da von außen via VPN drauf (Fritzbox VPN)
c) Ich habe auf meiner NAS 3 TB (RAID) zur Verfügung. Kann man sich ausrechnen, wann sie voll ist. Ansonsten mit find auch ein benutzerdefiniertes Script schreiben und jeden Tag in der Synology ablaufen lassen.
LG
/robin
hi, coole Anleitung kannst du das ID-RSA etwas ausführen ? Ist das nicht ein Sicherheitsrisiko mehr wenn man den PI aus dem Internet erreichen kann??
Nun ballert er ja die Backups so lange drauf bis das NAS irgendwann voll ist. Kann man da nicht nach 1 Monat löschen lassen ?
Vielleicht kann man ja ein Internet Backup Programm nutzen ?