Donnerstag, 3. Dezember 2015

Backup und Restore von FHEM

Backup ist immer eine gute Idee und sollte regelmäßig erfolgen. Noch viel wichtiger ist, dass man das Backup auch durch einen Restore verifiziert hat!
Viele machen Backup - aber kontrollieren?
Oder wie geht Restore?
Nachtrag 2021: Der Artikel gilt für eine externes Backup/Restore nach wie vor. Auch wenn man mit Windows 10 kein WinScp mehr benötigt, da ssh/scp direkt im System verfügbar ist.
Hinweis auf den restore Befehl: Im Wiki gibt es Beiträge wie der FHEM eigene restore Befehl verwendet werden kann. Link1  Link2

Was soll gesichert werden? 

Wichtig ist die Applikation (FHEM) getrennt vom System (Raspbian) zu sichern. Man will ja mal das System neu machen, neue Hardware, neue Raspbian Version usw. Man kann nicht immer davon ausgehen, das man ein komplettes System Image auf einer anderen Hardware wieder einfach zum laufen bekommt.
Meine Vorgehensweise für ein komplettes Restore:
  • Systemimage neu aufspielen
  • Anpassung machen: Hostname, ev. IP, Sprache, Zeit usw. (geht auch per Script)
  • Install Script laufen lassen (siehe hier)
  • Restore FHEM 

Backup FHEM

Backup kann man direkt in FHEM in der Oberfläche machen:
  • backup in der Kommandozeile eingeben oder
  • als Automatik vorm Update einrichten
  • oder per FHEM Geräte Definition als regelmäßiger Job
Wichtig ist in jedem Fall, dass man dafür sorgt, dass das Backup auch auf ein anderes Gerät übertragen wird und nicht nur lokal auf der SD Card liegt. Wenn die mal kaputt geht wäre es sonst blöd...
FHEM führt das backup seit geraumer Zeit  im Hintergund aus, dass Problem mit doppelten Backups durch Browser Refresh ist damit Geschichte (hier noch beschrieben). Im Log entsteht ein Eintrag beim Start, und ein Eintrag wenn es fertig ist:
 Backup with command: tar -cf - fhem.cfg ...  
 Backup done  

Restore FHEM

Mit Winscp kopiere ich die gewünschte/aktuelle Backup Datei aus meinem Sicherungs-Verzeichnis auf das neue System nach /home/pi. Damit umgehe ich Schreibrechte, muss nichts verbiegen und es bleibt quasi eine temporäre Datei. 
FHEM sollte jetzt beendet sein! Entweder mit shutdown in der FHEM Kommandozeile oder über Terminal (siehe unten).
Die eigentliche Wiederherstellung des Programmpfades erfolgt so:
 sudo tar -xvzf /home/pi/FHEM-201xxxxx_xxxxxx.tar.gz -C /opt/fhem/  
FHEM wieder starten und fertig, vorausgesetzt man hat System seitig bei der Neuinstallation nichts vergessen. 
In neueren Systemen (systemd ab Jessie) funktioniert es mit systemctl: 
 sudo systemctl start fhem  
 sudo systemctl stop fhem  

Die alten Befehl funktioniert auch unter Jessie noch:
 sudo invoke-rc.d fhem start  
 sudo invoke-rc.d fhem stop  

22 Kommentare:

  1. Danke, hat mir sehr geholfen!!

    AntwortenLöschen
  2. Danke für die hilfreichen Anleitungen, ohne diese wäre es Anfängern unmöglich Fhem zu nutzen.

    AntwortenLöschen
  3. danke, backup/restart hat mir sehr geholfen!

    AntwortenLöschen
  4. Danke - hat mir vermutlich 2 bis 3 Tage Arbeit erspart!!

    AntwortenLöschen
  5. Hallo danke erstmal für den tollen blog-beitrag

    ich habe das problem das ich die datei nicht auf dem ordner backup kopieren kann (keine schreibrechte) sagt Winscp mir immer wider (ich denke mit dem programm umgehe ich die rechte) oder muss ich noch was einstellen

    AntwortenLöschen
    Antworten
    1. Wieso denkst Du mit winscp umgehst Du Rechte? Ich habe ja geschrieben: Ins homedir des angemeldeten Benutzers (winscp Benutzer) kopieren, von dort dann nach /opt/fhem entpacken. In den Pfad backup würde ich nichts kopieren. Für weiteren Support mach besser einen Thread bei FHEM auf.
      Gruß Otto

      Löschen
  6. Hallo Otto,
    habe mich nach Deiner Anweisung gehalten, aber leider werden nur die Log Dateien wieder hergestellt.
    Zur info :
    habe einen neuen Raspberry 4 komplett neu aufgesetzt und wollte nun meine Sicherung einspielen. Doch leider funktioniert das nicht .
    Weißt Du eine Lösung ?
    Bekomme keine Fehlermeldungen!

    Gruß
    Wendelin

    AntwortenLöschen
    Antworten
    1. Hallo Wendelin,
      wenn nur die Logdateien wiederhergestellt werden, klingt es mir danach, als ob Du in dem Moment keine Rechte hast, die existierenden Dateien zu überschreiben. Mit tar -tvf kannst Du Dir anschauen was überhaupt in der Sicherung ist. Mit ls -lhaR /opt/fhem/ kannst Du vorher und nachher die Rechte anschauen. Aber das hier ist keine Supportplattform, wenn es wirklich nicht geht, solltest Du einen Thread aufmachen und schildern was Du getan hast. Die nur auf meine Anleitung zu beziehen bringt da nichts. Du musst schreiben was du wirklich getan hast.

      Gruß Otto

      Löschen
  7. Hi Otto, kann ich mein Backup auch über ein bestehendes System rüberbügeln? die FHEM.cfg dürfte ja ausgetauscht werden.

    AntwortenLöschen
    Antworten
    1. Klar, FHEM beenden und Restore machen und auf Fehlerausschriften achten. Es ist nie frei von Fehlermöglichkeiten! Stimmen z.B. die Rechte nicht, werden Dateien nicht "übergebügelt"!
      Gruß Otto

      Löschen
  8. Hallo Otto,
    gilt der obige Restore-Beitrag aktuell noch?
    Kann fhem nicht mehr aufrufen...
    LG Ingo

    AntwortenLöschen
    Antworten
    1. Halllo Ingo, ja klar der gilt nach wie vor für den Fall, dass Du ein Backup des FHEM Pfades gemacht hast. Alternativ habe ich auch mal am Anfang noch eine Bemerkung mit Links zum Wiki eingefügt. Der FHEM eigene restore Befehl (bzw. restoredirs) kann insbesondere nach einem Update helfen.
      Viele Grüße Otto

      Löschen
  9. Guten Morgen, Otto,
    bekomme beim Backup folgende Fehlermeldung:
    tar: ./FHEM/presence.sh.save: Funktion open fehlgeschlagen: Keine Berechtigung
    tar: Beende mit Fehlerstatus aufgrund vorheriger Fehler
    Kann ich dem entnehmen, dass das Backup - eben mit Ausnahme des presence - ansonsten funktioniert hat?
    LG Ingo

    AntwortenLöschen
    Antworten
    1. Guten Morgen, ich würde davon ausgehen, dass das backup unvollständig ist. FHEM agiert mit user fhem, dieser kann offenbar benanntes Script nicht lesen. Du musst die Rechte in deinem FHEM Pfad bereinigen. Im Systemterminal:
      sudo chown -R fhem: /opt/fhem/

      Gruß Otto

      Löschen
  10. Hat super funktioniert. Tausend Dank, Otto!

    AntwortenLöschen
  11. Hallo Otto,
    ich hab noch eine Frage ;-(
    Nach Restore ließ sich FHEM nicht aufrufen. Dann habe ich zunächst wie verlinkt sudo chown fhem: /opt/fhem/fhem.cfg
    sudo chown fhem: /opt/fhem/log/fhem.save gemacht und danach sudo -su fhem cp -R /opt/fhem/restoreDir/update/YYYY-MM-DD/* /opt/fhem/ (richtiges Datum eingesetzt). Jetzt startet FHEM, aber ohne Devices. Tausend Fehlermeldungen dieser Art im Log: Please define HUEDevice7 first.
    Muss ich noch irgendetwas aktivieren oder liegt der Fehler womöglich schon beim Backup?
    LG INgo

    AntwortenLöschen
  12. Hab einen Verdacht. Ausgangsbasis: Hatte Perl neu aufgesetzt und ein aktuelles FHEM (ohne eingerichtete Devices) aufgespielt. Wenn ich jetzt das restoreDir aufrufe, wird FHEM nach dem letzten FHEM-Update zurückgespielt (also ohne meine Devices) und nicht etwa meine FHEM-Sicherung (von einem anderen Raspi) mit allen Devices. Diese wird garnicht angeboten.
    Bleibt also die Frage, warum FHEM sich nicht aufrufen lässt, wenn ich auf das frische Perl und das FHEM-ohne-Devices meine FHEM-Sicherung vom anderen Raspi aufspiele.
    Hast Du einen Tipp?
    LG Ingo

    AntwortenLöschen
    Antworten
    1. Hallo Ingo, mimm mir es nicht übel, aber der Blog als Supportplattform: das wird nix. Bitte mach ein Thema im FHEM Forum auf! Deine Situation wird ja immer komplexer.
      restorDir enthält NICHT DEIN/E System/Sicherung, sondern deine Config vom letzten save und/oder die config und die Dateien die beim update aktualsiert wurden. Du kannst damit entweder einen älteren config Stand und/oder auf die früheren Systemmodule zurück!

      Gruß Otto

      Löschen
  13. Danke für den Blog. Habe damit gerade erfolgreich den Umzug meines FHEM vom alten auf einen neuen Raspi vorgenommen. Allerdings sehe ich, dass beim Restore auch alte Dateien wieder auftauchen, z.B. eine /opt/fhem/Restart von 2014. Kann es sein, dass der restore den Fehler macht, "gute" aktuelle Dateien durch uralte Versionen zu überschreiben?

    AntwortenLöschen
    Antworten
    1. Naja ein komplettes restore stellt alle Dateien aus dem Backup wieder her. Und Ja! es überschreibt dabei vorhandene Dateien. Wenn man das selektiv will, muss man das anders machen. Normal will man ja aber den Stand des backups wieder herstellen, in sich konsistent.

      Löschen