ANZEIGE

Howto: FHEM Backup & Wiederherstellung

HowTo FHEM Backup und Wiederherstellung

… denn Futsch ist Futsch!

Nachdem FHEM nun endlich komplett läuft, braucht man sich um nichts mehr kümmern – nicht ganz! Denn die Micro-SD Speicherkarten, mit denen der Raspberry Pi arbeitet, können nach vielen Schreib- und Lesevorgängen auch schnell die Grätsche machen. Und dann ist die gesamte Zeit, die man schon in die Programmierung von FHEM gesteckt hat: FUTSCH!
Einfacher noch: Durch Programmierversuche, gerade am Anfang, ist ebenso FHEM schnell mal zerschossen – ich spreche aus Erfahrung. Daher ist ein Backup immer empfehlenswert um eine Wiederherstellung zu gewährleisten.

Um dem Ganzen vorzubeugen, sollte jeder FHEM’ler ein komplettes Backup erstellen. Dies wird nachfolgend Schritt-für-Schritt erklärt.

Transcend USB 3.0 / 3.1 Gen 1...
SanDisk Ultra 32GB microSDHC Speicherkarte +...

Letzte Aktualisierung am 28.03.2024 um 09:01 Uhr | Werbung | Bilder: Amazon Product Advertising API

FHEM Backup erstellen

FHEM hat bereits eine eigene Backup-Option eingebaut. Um ein Backup zu erstellen, wird in die Commandozeile von FHEM lediglich backup eingegeben und mit Enter bestätigt. FHEM erstellt nun im Hintergrund das Backup, welches innerhalb von einigen Sekunden abgeschlossen sein sollte. Überprüft werden kann das Ganze im LogFile.

Backup sichern

Intern

Das Backup befindet sich nun auf dem Raspberry unter dem Pfad: /opt/fhem/backup. Um an die Datei zu gelangen, erfolgt der Zugriff per FTP bspw. mit dem Programm FileZilla. Der Standard-Login hierfür lautet:

Benutzerpi
Passwortraspberry
Port22

Unter diesem Pfad findet sich dann eine (odere mehrere) Backup-Dateie(n) mit der Dateiendung „tar.gz“. Die aktuellste Datei wird nun auf den eigenen PC heruntergeladen.

fhem backup und wiederherstellung

Extern

Um das Backup auf einen externen Datenträger zu erstellen, müssen ein paar weitere Schritte ausgeführt werden. Das Backup auf einem externen Datenträger wie z.B. einem USB-Stick zu speichern hat den Vorteil, dass beim Kartendefekt die Daten noch vom USB-Stick gelesen und zurückgespielt werden können.

Den USB-Stick an dieser Stelle noch nicht an den Raspberry Pi anstecken.

Damit der Raspberry USB-Sticks im Format NTFS und HFS+ erkennen kann, müssen die nötigen Treiber installiert werden. Die Befehle werden direkt in der SSH-Konsole ausgeführt.

sudo apt-get -y install ntfs-3g hfsutils hfsprogs exfat-fuse

Im Anschluss wird auf dem Raspberry ein Ordner im Verzeichnis /media erstellt, in dem später der USB-Stick eingebunden wird. Der leere Ordner dient als Einhängepunkt um später das Dateisystem einhängen zu können. Der Name ist natürlich frei wählbar.

sudo mkdir /media/usbstick

Und noch schnell die Rechte anpassen.

sudo chown pi /media/usbstick

Nun den USB-Stick an den Raspberry Pi anschließen.
Jetzt muss der Pfad zum USB-Stick ausgelesen werden. Dieser wird mit dem Befehl

sudo fdisk -l

ermittelt. Dieser lautet i.d.R. /dev/sda1

Danach wird dieser vorab manuell eingebunden. Wichtig ist nun, das richtige Dateiformat zu nehmen. USB-Sticks sind ab Werk meist auf FAT32 formatiert. Dies ist aus der Anzeige unter „Type“ aber ganz einfach zu sehen, falls man sich unsicher ist.

DateisystemBefehl
NTFS
sudo mount -t ntfs-3g -o uid=pi,gid=pi /dev/sda1 /media/usbstick/
FAT32
sudo mount -t vfat -o uid=pi,gid=pi /dev/sda1 /media/usbstick/
Ext4
sudo mount /dev/sda1 /media/usbstick
HFS+
sudo mount -t hfsplus -o force.uid=pi,gid=pi /dev/sda1 /media/usbstick/

An dieser Stelle kann in der Konsole mittels

cd /media/usbstick/

schon auf den USB-Stick zugegriffen werden.
Natürlich soll der Stick auch nach einem Neustart des Raspberry Pi automatisch wieder eingebunden werden. Hierzu werden ein paar weitere Schritte benötigt.

Es wird nun die UUID des USB-Sticks benötigt. Diese wird mit dem folgenden Befehl ermittelt:

sudo blkid

Hier den Pfad heraussuchen (z.B. /dev/sda1) und die UUID kopieren, ohne Anführungszeichen.

Nun die Datei fstab öffnen.

sudo nano /etc/fstab

In dieser Datei muss der entsprechende Eintrag, je nach Dateisystem des USB-Sticks, am Ende der Datei eingetragen werden. Die UUID natürlich gegen die Eigene austauschen.

DateisystemBefehl
NTFSUUID=C3B2-AA0B /media/usbstick/ ntfs-3g defaults,umask=000,users 0 0
FAT32UUID=C3B2-AA0B /media/usbstick/ vfat defaults,umask=000,users 0 0
Ext4UUID=C3B2-AA0B /media/usbstick ext4 defaults 0 0
HFS+UUID=C3B2-AA0B /media/usbstick/ hfsplus defaults,umask=000,users 0 0

Mit STRG + X werden die Änderungen mit y bestätigt und die Datei wird automatisch wieder geschlossen.

Ab hier ist der USB-Stick vollständig in den Raspberry Pi eingebunden.

Angebot SanDisk Ultra USB 3.0 Flash- Laufwerk 64 GB...
Raspberry Pi 3 Model B ARM-Cortex-A53 4x 1,2GHz,...

Letzte Aktualisierung am 28.03.2024 um 09:39 Uhr | Werbung | Bilder: Amazon Product Advertising API

Nun muss in FHEM lediglich das Backup-Ziel angepasst werden. Den nachfolgenden Befehl dazu einfach in die Konsolenzeile eingeben.

attr global backupdir /media/usbstick

Backup automatisieren

Wie FHEM das Backup nun automatisch ausführt, je nach gewünschter Zeit, erkläre ich nun an dieser Stelle. Alle genannten Befehle können direkt in die Konsolenzeile eingegeben werden.

Tägliches Backup um 23:59 Uhr
define startBackup at *23:59:00 backup
Jeden Sonntag um 23:59 Uhr
define startBackup DOIF ([23:59:30|0]) (backup)

Die Tage sind wiefolgt definiert:

0: Sonntag, 1: Montag, 2: Dienstag, 3: Mittwoch, 4 Donnerstag, 5 Freitag, 6 Samstag

So hat man natürlich auch die Möglichkeit, das Backup jeden Freitag um 12:00 Uhr zu starten:

define startBackup DOIF ([12:00:00|5]) (backup)

Stunde:Minute:Sekunde|Tag

FHEM neu aufsetzen

Um ein gesichertes Backup wieder einspielen zu können, wird immer eine frische Installation von FHEM benötigt.

Wer hierzu eine Anleitung benötigt, findet diese an dieser Stelle:

Howto: FHEM Server auf Raspberry einrichten

Howto: FHEM Grundeinstellung

Wiederherstellung – Backup einspielen

Nachdem nun eine frische FHEM-Installation auf dem Raspberry läuft, wird nun die gesicherte Backup-Datei in die neue Installation eingespielt. Dazu wird die Backup-Datei in das Verzeichnis „/opt/fhem/backup“ kopiert. Ggf. muss vorab das Verzeichnis „backup“ erstellt werden.

sudo mkdir /opt/fhem/backup

Nun wird die laufende FHEM-Instanz gestoppt, …

invoke-rc.d fhem stop

… und das Backup anschließend entpackt.

sudo tar -xvzf /opt/fhem/backup/FHEM-20160305_203123.tar.gz -C /opt/fhem/

Das Backup wird damit nun automatisch in die jeweiligen Verzeichnisse entpackt. Im Anschluss daran, muss FHEM wieder manuell gestartet werden.

sudo invoke-rc.d fhem start

Zum Abschluss wird sämtliche externe Hardware vom alten Raspberry an den neuen angesteckt und sollte problemlos funktionieren. Eventuell müssen noch zusätzliche Pakete (bspw. für die Sonos-Steuerung) manuell nachinstalliert werden, was allerdings die kleinste Hürde darstellen sollte.

Ebenso gilt zu beachten, dass eventuell installierte SSL Zertifikate nicht automatisch übernommen werden, auch diese müssen wieder manuell eingerichtet werden.

Alternative Sicherungsmethode per Image

Um den Backup-Aufwand noch geringer zu halten bzw. etwas einfacherer, kann auch direkt die ganze SD-Karte als Image-Datei gesichert werden. Der einzige Nachteil hier: Das Backup dauert länger und die SD-Karte muss am PC in einen Kartenleser eingelegt werden.

Mit dem Win32DiskImager kann dies sehr schnell realisiert werden.

  1. Den Raspberry mit dem Befehl sudo shutdown -h 0 herunterfahren.
  2. Speicherkarte aus dem Raspberry entfernen und in den Kartenleser am PC einlegen.
  3. Speicherort für das Backup-Image wählen, sowie den Laufwerksbuchstaben der Speicherkarte angeben.
  4. Mit einem Klick auf „Read“ startet die Sicherung als Image-Datei.

Ein meiner Meinung nach zu vernachlässigender Nachteil ist, dass beim Wiederherstellen eine mindestens genauso große SD-Karte benötigt wird. Bedeutet: Wurde das Backup-Image von einer 4GB-Karte erstellt, muss die neue mindestens 4GB groß sein. Größer ist auch möglich, nur nicht kleiner.


Wie bei allem gilt:
Viele Wege führen nach Rom. Meiner Meinung nach sind diese beiden Varianten allerdings eine sichere Lösung, um nicht irgendwann ein böses Erwachen erleiden zu müssen.

Viel Erfolg bei deinem Backup! Hoffentlich wirst du es nie zwingend benötigen.

Klicke auf einen Stern um eine Bewertung abzugeben!

Durchschnittsbewertung 4.9 / 5. Bewertungen: 29

Es tut uns leid, dass dieser Beitrag für dich nicht hilfreich war!

Lassen Sie uns diesen Beitrag verbessern!

Wie können wir den Beitrag verbessern?

17 Gedanken zu „Howto: FHEM Backup & Wiederherstellung“

17 Kommentare

  1. Moin Moin,
    vielen Dank für deine Anleitung 🙂
    Ich musste den Befehl
    sudo tar -xvzf /opt/fhem/backup/FHEM-20160305_203123.tar.gz -C /opt/fhem/
    übrigens auf
    sudo tar -xvzf /opt/fhem/backup/FHEM-20160305_203123.tar.gz -C /
    anpassen, damit es funktioniert.

    • Hallo Tom,

      was meinst du genau mit „funktioniert hat“? Wenn du es erstellen lässt, wird das Backup im Verzeichnis angelegt. Falls du was anderes meinst, gib mir nochmal Bescheid.

      Viele Grüße
      Michael

  2. Hallo Michael,
    ich meine, wie ich überprüfen kann, ob das Backup auch auf dem USB Stick gelandet ist. Über list directory oder kann ich das auch im FHEM sehen? In irgendeiner Log- Datei?

    • Hi Tom,
      ich bin mir gerade nicht sicher in welcher Datei das geloggt wird. Das man es in FHEM direkt sehen könnte, ist mir nicht bekannt. Hast du denn das Problem, dass die Backups nicht auf deinem USB-Stick erstellt werden?

      Viele Grüße
      Michael

  3. Hi Michael,
    ich habe das grundsätzliche Problem, dass mein raspberry mit dem Anschluss eines USB- Sticks Probleme hat. Wahrscheinlich, weil ich den Homatic Stick herausgenommen habe und stattdessen an diesem Anschluss den für das Backup vorgesehenene Stick verwendet habe.
    Ich werde jetzt, da meine FHEM Installation noch auf einer 1er Version läuft, dies zum Anlass nehmen, mit FHEM auf einen Raspberrry 3 umzuziehen. Das Backup habe ich nun über Filezilla direkt vom Raspberry geholt. Ich hoffe, dass ich nach der Grundinstallation auf dem 3er nur das Backup einspielen muss und fertig?

    • Hi Tom,
      okay, das mag natürlich sein – auch für mich wäre das schwer reproduzierbar. Daher klingt die Idee des Umzugs schon mal sehr gut.
      Hast du schon von dem neuem Modell Pi 3 B+ (Affiliate Link) gehört? Der ist nochmal etwas schneller als das „normale“ 3er Modell.

      Das Backup solltest du so 1:1 zurück spielen können, ja. Lediglich abhängige Pakete musst du neu installieren, die werden nicht im Backup hinterlegt. Der Sicherheit halber würde ich dir aber empfehlen (sofern vorhanden) eine zweite Speicherkarte zu verwenden. Falls doch etwas nicht funktioniert, hast du so noch dein laufendes System.

      Viele Grüße
      Michael

  4. Hallo Michael,

    danke für den tollen Blog-Beitrag. Ich versuche gerade von meinem alten Raspi2 auf einen Raspi3 die FHEM-Installation umzuziehen. Dabei funktioniert auch FHEM selber nach dem Einspielen auf den Raspi3 wie gewünscht.

    Ich habe aber das Problem, dass ich nach dem Einspielen des Backups nicht mehr per https auf das Webfrontend zugreifen kann. Ich vermute, dass der alte base64 Hash aus der alten Installation auf dem neuen Raspi nicht mehr klappt? Hast Du eine Idee wo ich anfangen kann zu suchen?

    Vielen Dank und beste Grüße
    vom Willi

    • Hey, ich antworte mir mal selber, da dass sicher vielen auch so geht ^^
      1.) ich habe anhand dieser Seite https://wiki.fhem.de/wiki/Raspberry_Pi_%26_HTTPS die hem Installation wieder für https fit gemacht – das hatte ich vorher vergessen und wird auch m.W. nicht über die fhem Backup-Funktion abgedeckt
      2.) fhem stoppen: sudo invoke-rc.d fhem stop
      3.) Neuen Hash generieren: sudo echo -n user:passwort | base64
      4.) Neuen Hash in fhem.cfg ersetzen: sudo nano /opt/fhem/fhem.cfg (hilfreich ist es wenn man den alten Hash kennt und mit CTRL+W danach sucht)
      5.) fhem starten: sudo invoke-rc.d fhem start

      Und es geht wieder 🙂

      Also: Erfolgreich vom Raspi2 auf den Raspi3 umgezogen. Als nächstes kümmere ich mich um die Sprachsteuerung mit Siri ^^

      Vielen Dank und beste Grüße
      vom Willi

    • Hallo Willi,

      du bist ja schneller als die Polizei erlaubt 😛
      Besten Dank für deine Beschreibung, vielleicht hilft es ja dem ein- oder anderen.

      Viele Grüße
      Michael

  5. Hey Michael,
    kann es sein dass wir uns aus Aachen her kennen? Hast Du da so in der Zeit von 2000-2010 studiert? Und kann es sein dass Du zufällig auch bei der JJ-Sporttruppe warst?
    In diesem Fall: Viele Grüße von einem dicken Schwarzgurt ^^

    • Da muss ich dich enttäuschen.
      Mit Aachen hatte ich bisher nichts am Hut.

      Grüße

  6. Hi, danke fuer deinen Blog Eintrag.
    Ich habs versucht mit einem USB Stick und Fat32 umzusetzen. Leider erhalte ich immer:

    sh: 1: cannot create /media/usbstick/FHEM-20190123_154445.tar.gz: Permission denied

    Ich bin mir nicht sicher welche Berechtigungen ihm fehlen, hab ja alles wie im Blog erstellt.
    Hast du noch einen Tipp?

    • Hallo Marv,

      laut dieser Meldung fehlen Schreibrechte, damit auf den USB-Stick geschrieben werden darf.

      Viele Grüße
      Michael

  7. Hi,
    ich habe ein ähnliche Berechtigungsproblem.

    Hatte die Rechte mit „sudo chown pi /media/usbstick“ gemäß Anleitung geändert. Hatte auch via Filezilla nachgeschaut und die Rechte wurden geändert.

    Nach einem Neustart am Ende Deiner Anleitung (also auch mit dem automatischen Einbinden des Stick) sind die Recht nun wieder auf root. Und FHEM kann nicht darauf schreiben. Mit „sudo chown pi /media/usbstick“ lassen sich die Recht auch nicht wieder ändern.

    Gibt es hierzu einen Rat?

    Gruß aus Dortmund
    Jörg

  8. Hallo Michael,
    bin gerade durch Zufall auf deine Seite gestoßen, weil ich nämlich einen SmartHome-Server neu aufsetzen musste. Wie du zurecht anmerkst, ist FHEM ja nur ein Teil der Installation. Allerdings geht das Erstellen eines Images unter Linux wesentlich einfacher über die Konsole mit dd. Der komplette Befehl würde lauten sudo dd if=/dev/NameDerSDCard of=/PfadZumSicherungslaufwerk/SHKomplett.img bs=1MB . Der Befehl kommt in eine Batch-Datei, die dann per Cronjob aufgerufen wird. Im Internet gibt es da schöne Beispiele. Wer ein NAS hat sollte prüfen, ob er Verzeichnisse per NFS freigeben kann. Dieses Verzeichnis wird dann per Automount in den Raspi eingebunden und als Ziellaufwerk für die Sicherung verwendet. Am Ende schickt man sich die (hoffentlich) Erfolgsmeldung per Mail zu. Dann kann man auch reagieren, wenn das Backup fehlschlägt.

    Ich hatte mal vor einiger Zeit eine entsprechende Batch-Datei aus dem Internet geladen und passe sie an die jeweiligen Serverumgebungen an. Der Batch speichert die Backups jeweils unter einem neuen Namen und löscht alte Backups, wenn die Alzahl der Dateien einen bestimmten Wert übersteigt. Schöne Sache!

Schreibe einen Kommentar zu tom Antworten abbrechen

OwnSmartHome.de