… 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.
Letzte Aktualisierung am 29.03.2024 um 10:08 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:
Benutzer | pi |
Passwort | raspberry |
Port | 22 |
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.
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.
Dateisystem | Befehl |
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.
Dateisystem | Befehl |
NTFS | UUID=C3B2-AA0B /media/usbstick/ ntfs-3g defaults,umask=000,users 0 0 |
FAT32 | UUID=C3B2-AA0B /media/usbstick/ vfat defaults,umask=000,users 0 0 |
Ext4 | UUID=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.
Letzte Aktualisierung am 29.03.2024 um 09:37 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
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.
- Den Raspberry mit dem Befehl sudo shutdown -h 0 herunterfahren.
- Speicherkarte aus dem Raspberry entfernen und in den Kartenleser am PC einlegen.
- Speicherort für das Backup-Image wählen, sowie den Laufwerksbuchstaben der Speicherkarte angeben.
- 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.
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.
Hi Sven,
danke für deinen Hinweis 🙂
Hi Michael,
danke für die tolle Anleitung. Frage: Wie kann ich überprüfen, ob das Backup auch funktioniert hat?
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
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
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
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
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
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
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
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!