In diesem Beitrag erkläre ich euch, wie ein auf einem Raspberri Pi installiertes openHAB gesichert und wiederhergestellt werden kann. Dazu gibt es mehrere Wege. Ich erkläre euch kurz die Vor- und Nachteile und wie es funktioniert.
Backups erstellen ist ja immer ein etwas leidiges Thema. So wirklich Spaß macht es nicht und man sieht den Nutzen erst später. Aber wenn die SD Karte plötzlich den Geist aufgibt oder man das System kaputtgespielt hat, ist es doch schön, nicht wieder zig Stunden in die Einrichtung investieren zu müssen. Ich spreche da aus Erfahrung..
Zum Zeitpunkt des Artikels ist die Version openHAB 2.5.1 aktuell. Die Vorgehensweise funktioniert auch für opehHAB 3.0, die entsprechenden Pfade habe ich ergänzt.
Verwendetes Material / Lizenzen
- Raspberry Pi (z.B. bei amazon.de als Komplettkit, ca. 80 EUR)
- microSD Karte, am besten mit 16GB oder mehr Speicher (z.B. Sandisk Ultra microSDHC 32GB bei amazon.de, ca. 7 EUR)
- Kartenleser für die microSD Karte (z.B. Transcend TS-RDF9K2 bei amazon.de, ca. 14 EUR)
Die verschiedenen Varianten
Für ein Backup eines auf einem Raspberry Pi installierten openHAB gibt es im Wesentlichen zwei Ansätze:
A) Komplette Sicherung der SD Karte
Vorteile:
- Einfach, kein tieferes technisches Wissen erforderlich
- Wirklich alles ist gesichert, man erhält 1:1 den Systemzustand zurück bei Wiederherstellung
- Schnelle Wiederherstellung
Nachteile:
- Zeitaufwändiger als eine teilweise Sicherung
- SD Karte muss aus dem Raspberry entnommen werden
- Größere Datenmengen je Sicherung (je nach genauer Methode und Größe der SD Karte ~3 GB bis über 32 GB)
B) Sicherung der Konfiguration von openHAB
Vorteile:
- Kleine Datenmengen je SIcherung (wenige Megabyte)
- Stellt nur die Konfiguration wieder her, kann daher auch z.B. für die Migration auf eine neuere Linux Distribution oder von einem Pi3 auf einen Pi4 genutzt werden
- SD Karte kann im Raspberry bleiben
- Automatisierbar
Nachteile:
- Mehr Aufwand bei der Wiederherstellung
- Komplizierter durchzuführen
Nach diesem kurzen Überblick stelle ich euch nun im Folgenden die Methoden vor die ich selbst nutze oder genutzt habe:
1) Komplette Sicherung und Wiederherstellung mit Win32DiskImager (kostenlos)
Mit dem kostenlosen Tool Win32DiskImager könnt ihr komplette SD Karten Bit für Bit sichern und wiederherstellen. Nachteil hierbei ist einerseits, dass das Backup genauso groß ist, wie die SD Karte (bei mir also z.B. 32 GB), unabhängig davon wie viel Platz tatsächlich belegt ist.
Außerdem muss die neue SD Karte mindestens genauso groß sein. Größer geht, kleiner nicht. Es empfiehlt sich daher, genau das gleiche SD Karten Modell als Ersatz noch einmal da zu haben (oder eine größere), da auch Karten mit der gleichen angegebenen Größe (z.B. 32 GB) von Hersteller zu Hersteller um ein paar Byte abweichende Größen haben und die Wiederherstellung dann daran scheitern kann, wenn die neue Karte minimal kleiner ist.
Trotz der Nachteile ist es keine schlechte Methode, denn es ist immerhin kostenlos und einfach. Herunterladen könnt ihr das Tool hier.
Sicherung
Zum Sichern loggt ihr euch erst einmal per SSH auf dem Raspberry ein (eine Erklärung findet ihr z.B. im Installationsbeitrag von mir) und führt dort dann den Befehl
sudo shutdown
aus, damit das System ordnungsgemäß herunterfahren kann. Wartet noch ein paar Minuten ab und nehmt dann die SD Karte aus dem Raspberry und letzt sie in euren Kartenleser ein.
Gegebenenfalls von Windows aufpoppende Meldungen, ihr solltet doch die Karte formatieren, brecht ihr ab. Windows erkennt lediglich das Dateisystem nicht, da es zu Linux gehört.
Dann startet ihr denn Win32DiskImager und wählt den zur SD Karte zugehörigen Datenträger rechts aus. Vermutlich gibt es dort zwei Einträge. Wählt den, der im Explorer die Bezeichnung „boot“ hat. Auch wenn dort im Explorer nur eine 250 MB große Partition angezeigt wird, wird dennoch die ganze SD Karte gesichert.
Für die Imagedatei gebt ihr eine neue Datei mit der Endung .img an. Startet den Vorgang dann mit „Lesen“.
Das kann nun eine ganze Weile dauern. Bei mir ist es ca. eine Viertelstunde bei einer 32 GB Karte. Wenn der Fortschrittsbalken bei 100 Prozent angekommen ist, seid ihr fertig mit der Sicherung.
Wiederherstellung
Die Wiederherstellung funktioniert genau wie das Backup, nur dass ihr diesmal eure Sicherungs .img Datei auswählt und anschließend auf „Schreiben“ klickt:
Das dauert jetzt auch wieder etwas länger (bei mir ca. 30 Minuten bei einer 32 GB Karte). Anschließend werft ihr die Karte unter Windows ordnungsgemäß mit dem „Hardware sicher entfernen“ Icon in der Taskleiste aus und legt sie wieder in euren Raspberry ein.
2) Komplette Sicherung und Wiederherstellung mit Paragon Hard Disk Manager (kostenpflichtig)
Etwas bequemer geht es mit einem kostenpflichtigen Zusatztool, z.B. Paragon Hard Disk Manager (z.B. bei amazon.de auf CDROM für 36 EUR oder direkt beim Hersteller als Download für 50 EUR).
Vorteil ist, dass das Tool das Dateisystem auf der SD Karte erkennt und daher nur die Bereiche sichert, die tatsächlich Daten enthalten. Die Sicherungen sind daher dann nur 2 GB statt 32 GB groß. Zusätzlicher Bonus ist, dass es viel schneller geht. Klar, es werden ja auch weniger Daten kopiert. Und auch das Wiederherstellen auf SD Karten oder Festplatten anderer Größe ist kein Problem, die Partitionen werden entsprechend angepasst.
Achtung: Es gibt anscheinend aktuell noch ungeklärte Probleme bei der Wiederherstellung, wenn man nicht auf die selbe sondern auf eine andere SD Karte zurückspielt (siehe Kommentare ganz unten). Ich empfehle daher dringend, lieber die Win32DiskImager Methode zu verwenden!
Sicherung
Folgt einfach den Bildern in der Galerie und schon habt ihr nach einer knappen Minute ein Backup erstellt. Wichtig ist vor allem, die vollständige SD Karte auszuwählen (Bild 3). Der Rest sollte selbsterklärend sein.
Wiederherstellung
Auch hier gibt es keine großen Überraschungen. Folge einfach der bebilderten Anleitung.
3) Sicherung und Wiederherstellung der Konfiguration mit openHAB eigenem Tool (kostenlos)
Sicherung
Zur Sicherung verbindet ihr euch per SSH mit openHAB (eine Erklärung findet ihr z.B. im Installationsbeitrag von mir) und führt dort folgenden Befehl aus:
sudo $OPENHAB_RUNTIME/bin/backup
Anschließend findet ihr das Backup als ZIP Archiv unter:
- openHAB2:
\openhab\openHAB-share\openhab2-userdata\backups
- openHAB3:
\openhab\openHAB-userdata\backups
Kopiert euch die ZIP Datei an einen sicheren Ort eurer Wahl und ihr seid fertig.
Eine Automatisierung wäre z.B. möglich, indem das Backup Skript per Cron Job täglich gestartet wird und die Datei auf einen angeschlossenen USB Stick kopiert wird. Wenn euch das interessiert, hinterlasst einen Kommentar, dann beschreibe ich es ausführlicher 🙂
Wiederherstellung
Zur Wiederherstellung verfahrt ihr zunächst ganz genau so, als wolltet ihr ein neues openHAB System einrichten. Wie das geht habe ich hier für openHAB 2 und hier für openHAB 3 beschrieben. Folgt einfach der Anleitung bis zur Einrichtung der Karaf / openHAB Konsole. Dann könnt ihr hier weitermachen.
Wenn das System so weit wieder läuft und aus dem Netzwerk erreichbar ist, könnt ihr als nächstes die Backup Datei dorthin übertragen. Dafür müsst ihr unter
- openHAB2:
\\openhab\openHAB-share\openhab2-userdata
- openHAB3:
\\openhab\openHAB-userdata
einen Ordner mit dem Namen „backup“ anlegen und die Datei dort hinein kopieren:
Von der Installation solltet ihr noch eine SSH Verbindung zu openHAB offen haben. Wenn nicht, verbindet euch erneut. Dort führt ihr dann nacheinander die Befehle aus:
- openHAB 2:
sudo systemctl stop openhab2
- openHAB 3:
sudo systemctl stop openhab
- openHAB 2:
sudo $OPENHAB_RUNTIME/bin/restore $OPENHAB_BACKUPS/openhab2-backup-<DATUM>.zip
- openHAB 3:
sudo $OPENHAB_RUNTIME/bin/restore $OPENHAB_BACKUPS/openhab-backup-<DATUM>.zip
<DATUM> ersetzt ihr natürlich durch den passenden Wert für eure Datei. Hinweis: Wenn ihr TAB benutzt, um die Pfade vervollständigen zu lassen, fügt die Shell für das Dollarzeichen $ noch einen Backslash \ ein. Damit funktioniert der Befehl nicht mehr.
Die Abfrage bestätigt ihr mit y. Auch ein Versionswechsel auf eine neuere Version (wie bei mir) ist grundsätzlich kein Problem, sofern sich nicht grundlegend etwas verändert hat (Release 2.5.0 war so ein Fall). Schaut euch im Zweifelsfall die Release Notes genau an und arbeitet dann nach der Wiederherstellung entsprechend nach.
- openHAB 2:
sudo systemctl start openhab2
- openHAB 3:
sudo systemctl start openhab
Wenn alles gut gegangen ist, sollte jetzt eure Konfiguration vollständig wiederhergestellt sein und alle Geräte auch direkt im „Online“ Status 🙂
Optional: Wiederherstellen der statischen IP Adresse
Wenn ihr eine per DHCP verteilte statische Adresse für eure openHAB Installation nutzt, muss diese, falls sich der Raspberry Pi, den ihr verwendet, ändert (z.B. weil der alte defekt war), anschließend neu konfiguriert werden. Das gilt auch bei einem kompletten Wiederherstellen eines Backups. Grund ist, dass der neue Raspberry eine neue MAC Adresse hat und daher vom DHCP Server als neues Gerät erkannt wird und eine andere IP Adresse zugewiesen bekommt.
Die alte IP weiterzuverwenden ist allerdings sehr empfehlenswert, da diese in diversen Stellen der Konfiguration genutzt wird und so keine Probleme auftreten können, die durch den IP wechsel aufkommen.
Im Fall der FritzBox ist das Einrichten damit erledigt, die alte Konfiguration zu entfernen (Mülltonnen Symbol unter Heimnetz > Netzwerk) und anschließend dem neuen Gerät wieder die selbe IP Adresse zuzuweisen mit dem Haken „Diesem Netzwerkgerät immer die gleiche IPv4-Adresse zuweisen.“
Falls die FritzBox sich beschwert, dass die Adresse schon vergeben ist, versucht es einfach nach ein paar Minuten noch einmal, die Aktualisierung im Hintergrund kann ein paar Minuten dauern. Wenn auch das nicht hilft, reicht vermutlich ein Neustart der FritzBox aus.
Schlusswort
Ich freue mich über eure Kommentare, ob euch der Beitrag weitergeholfen hat. Schreibt auch gerne, wenn ihr Fragen habt oder doch etwas unklar geblieben ist. Oder wenn ihr aufbauend darauf spannende weitere Automatisierungs Projekte umsetzen konntet 🙂
Freiberuflicher IT Berater, Open Source Entwickler und begeisterter Smarthome Nutzer. Das hier ist mein Braindump für Technikthemen, die mich beschäftigen.
Hi, der erste Befehl unter 3) zur Erstellung des Backups sollte vermutlich backup heißen, nicht restore 😊
Du hast natürlich Recht.. ich habe es oben angepasst. Danke für den Hinweis!
Hi. Danke für die super Erklärung.
Für einen Linux Anfänger (also mich) wäre die Erklärung der Automatisierung per Cronjob super.
Eine ganz ordentliche Anleitung für Cronjobs auf dem Raspberry findetst du z.B. unter: http://raspberry.tips/raspberrypi-einsteiger/cronjob-auf-dem-raspberry-pi-einrichten
Für das tägliche Backup müsstest du dann nur das „/root/scripts/backup.sh“ aus dem Beispiel durch „$OPENHAB_RUNTIME/bin/backup“ ersetzen.
Hallo, ich habe eine Frage. Beim Restore auf eine neue SD bekomme ich zwei Partitionen angezeigt während des Restores. Am Ende kommt kann noch eine Meldung das ich einen „reinit“ auf die Linuxpartition machen soll. Ich weiß aber nicht was damit gemeint ist und wo?! Jedenfalls ist die neue SD Karte nicht lauffähig. System bootet nicht. Was mache ich falsch?
Hallo Stefan, mit welcher Methode versuchst du es denn?
Bei Paragon bekomme ich auch die Nachricht am Ende „sofern es linux ist, reinitialisieren sie bitte den boot-loader“. Da keine weitere Hilfe Paragons angeboten wird und ich ebenfalls zu wenig Ahnung habe wie ein boot-loader reinitialisiert wird, stelle ich hier auch noch einmal die Frage. Vielleicht kannst du helfen. (Ich habe keine weitere Linux-Systeme!)
Hi Michael, siehe meine Antwort weiter unten.
Super Anleitung! Könntest du noch erklären wie das tägliche automatische Backup mit USB Stick funktioniert?
Leider ist eine mit Paragon Backup erstellte SD Karte nicht bootfähig! Reinit erforderlich! Gibt es dafür eine Lösung?
Ich habe die Paragon Lösung mit Hard Disk Manager 17 mit Backup and Restore 13/14 und 16 probiert. Nichts funktioniert, insbesonder nicht das Verkleinern!
Funktioniert das bei irgendjemand?
Oops, ich habe beim Testen immer nur das Backup auf die selbe SD Karte zurückgeschrieben, von der ich es gemacht habe. Das hat bestens funktioniert (siehe auch z.B. https://support.paragon-software.com/showthread.php?592-Sofern-Linux-installiert-ist-reinitialisieren-Sie-bitte-den-boot-loader, wo Nutzer ähnliches berichten).
Ggf. wird also tatsächlich „nur“ der Bootloader nicht mit wiederhergestellt. Hast du einmal versucht, erst die neue SD Karte ganz normal mit einem Raspi Image zu beschreiben und dann erst das Backup drüberzuspielen? Meine Hoffnung wäre, dass dadurch der Bootloader genauso erhalten bleibt wie beim Zurückspielen auf die ursprüngliche SD Karte.
Alternativ gibt es hier noch eine Anleitung, um den Bootloader wiederherzustellen: https://howchoo.com/pi/install-recover-raspberry-pi-4-bootloader
Beides habe ich allerdings noch nicht selbst probiert. Ich werde daher den Teil über Paragon im Artikel erst einmal entsprechend kennzeichnen, damit nicht noch jemandem wichtige Daten dadurch verloren gehen..
Wenn du eine Lösung gefunden hast, sag gerne bescheid. Dann aktualisiere ich den Artikel entsprechend.
Das mit dem Raspi Image habe ich auch probiert. Mit Paragon habe ich dann ohne Erfolg versucht das Backup, nur die rootfs Partion, die boot Partition ohne Verkleinerung, die rootfs mit Verkleinerung .. einzuspielen.
Der Artikel zur Widerherstellung des bootloaders bezieht sich auf den boot loader im EEPROM des Pi. Der hat ja kein Problem. Zur Lösung müsste man die SD Karte nach dem Kopieren und Verkleinern wieder bootfähig machen. Hat jemand dafür eine Lösung?
Ich habe OH3 auf einer SSD (per Sata-USB) am RPI4. Ich habe mir bei einem fehlgeschlagenen Update die boot-Partition zerschossen. Nun habe ich auf einer neuen SD-Karte das openhabian Image frisch installiert, die steckt im Raspi und dieser startet. Die ursprüngliche SSD habe ich auch angeschlossen und gemountet.
Welche Verzeichnisse müsste ich nun von der alten SSD auf die neue SD-Karte kopieren um quasi ein manuelles Restore durchzuführen. Und was müssten man vorher/naher ggf. noch zusätzlich manuell installieren. 3rd-Party-Software (zB MySQL) habe ich nicht in Nutzung gehabt. Nur das, was man standardmäßig installieren kann (mosquito, Samba etc.)
Wäre sehr Dankbar für ein wenig Hilfe!
Thomas
Ich glaube das ganze funktioniert nicht mehr.
Ich habe die neuste Version von OH3 runter geladen und wollte es wieder auf OH2 umstellen um im Anschluss mein Backup wieder in zu spielen. Das Ganze scheitert schon an daran, dass dafür Verzeichnisse gebraucht werden, welche gar nicht existieren. Ausserdem kann man trotz Auswahl in der Config nicht wieder auf OH2 umstellen.
Hat das jemand eine Idee?
Hallo,
ich habe mir das Backup mit dem openHAB eigenem Tool gezogen und kopiert. Will ich es auf den neuen Raspi kopieren, bekomme ich die Meldung, dass ich keine Berechtigung dafür habe. Eine möglichkeit die Dateienattribute zu ändern finde ich allerdings auch nicht. Ich stelle diese auf „777“ es wird aber nicht übernommen.
Kannst du mir vielleicht weiterhelfen?
Danke
Grüße
Tja, bei mir hat die einfachste Methode – Win32Diskimager – nicht funktioniert. Die Karten sind die gleichen. Mehrere Versuche, auch mit größeren Karten, waren erfolglos. Hat jemand eine Idee woran es liegen könnte?
Ich wollte nachreichen, dass sich der Pi weder auf der Fritzbox anmeldet noch über PuTTy erreichbar ist.