Kategorien
Haustechnik

openHAB auf Raspberry sichern und wiederherstellen (Backup und Restore)

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 🙂

Wenn diese Seite für dich hilfreich war und du dich bei mir bedanken möchtest, dann freue ich mich ganz außerordentlich darüber, wenn du für deinen nächsten Einkauf bei amazon.de über diesen Link gehst. Ich bekomme dann eine kleine Provision, für dich kostet es keinen Cent extra. Wenn du mir lieber direkt etwas zukommen lassen möchtest, dann kannst du das hier.

13 Antworten auf „openHAB auf Raspberry sichern und wiederherstellen (Backup und Restore)“

Hi, der erste Befehl unter 3) zur Erstellung des Backups sollte vermutlich backup heißen, nicht restore 😊

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.

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?

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!)

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?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.