Backup: Unterschied zwischen den Versionen

Aus FHEMWiki
K (→‎Backup manuell ausführen (Weboberfläche): erläuternden Hinweis eingefügt)
(→‎Backup manuell ausführen (Eingabefeld): Hinweis auf Ausführung im Hintergrund eingefügt)
 
(9 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{SEITENTITEL:backup}}
{{SEITENTITEL:backup}}
{{Infobox Modul
{{Infobox Modul
|ModPurpose=Datensicherung der Fhem-Installation
|ModPurpose=Datensicherung der FHEM-Installation
|ModType=c
|ModType=cmd
|ModCmdRef=backup
|ModCmdRef=backup
|ModForumArea=Sonstiges
|ModForumArea=Sonstiges
Zeile 8: Zeile 8:
|ModOwner=rudolfkoenig ([http://forum.fhem.de/index.php?action=profile;u=8 Forum] / [[Benutzer Diskussion:Rudolfkoenig|Wiki]])
|ModOwner=rudolfkoenig ([http://forum.fhem.de/index.php?action=profile;u=8 Forum] / [[Benutzer Diskussion:Rudolfkoenig|Wiki]])
}}
}}
{{Randnotiz|RNTyp=Warn|RNText=Die Datensicherung kann je nach verwendeter Server Hardware recht lange dauern.}}
{{Randnotiz|RNTyp=Warn|RNText=Die Datensicherung kann je nach verwendeter Server Hardware recht lange dauern. Wird mit global attribute backupdir das lokale Verzeichnis auf ein anderes Laufwerk umgelenkt kann es bei Schwierigkeiten mit diesem Laufwerk (Netzwerk) zu extremen Blockaden des gesamten Systems kommen.}}
Für Datensicherungszwecke ist in Fhem der Befehl '''backup''' integriert.  
Für Datensicherungszwecke ist in FHEM der Befehl '''backup''' integriert.  


Im Auslieferungszustand von fhem werden die erstellten Backups im Ordner <code>/var/opt/fhem/Backup</code> abgelegt. Die Datensicherung umfasst das komplette Fhem-Verzeichnis. Damit sind alle angepassten und selbst erstellten Dateien und Icons enthalten. Das Backup wird als .tar.gz Datei abgelegt und trägt dabei im Namen das Datum und die Uhrzeit, an dem das Backup ausgeführt wurde.
Im Auslieferungszustand von FHEM werden die erstellten Backups im Ordner <code>./fhem/backup</code> abgelegt. Die Datensicherung umfasst das komplette FHEM-Verzeichnis. Damit sind alle angepassten und selbst erstellten Dateien und Icons enthalten. Das Backup wird als .tar.gz Datei abgelegt und trägt dabei im Namen das Datum und die Uhrzeit, an dem das Backup ausgeführt wurde.


Weitere Details zu dem Befehl ''backup'' können der [http://fhem.de/commandref.html#backup commandref] entnommen werden.  
Der backup Befehl blockiert seit [https://forum.fhem.de/index.php/topic,80237.msg723427.html#msg723427 Dezember 2017] nicht mehr und wird unabhängig vom Aufruf im Hintergrund ausgeführt.
 
Weitere Details zu dem Befehl ''backup'' können der {{Link2CmdRef|Anker=backup}} entnommen werden.  


== Backup manuell ausführen (Eingabefeld) ==
== Backup manuell ausführen (Eingabefeld) ==
Um ein Backup zu erstellen genügt es, in der fhem [[PGM2|Benutzeroberfläche]] im Eingabefeld den Befehl ''backup'' zu schreiben und mit return auszuführen (nicht den Save-Button betätigen, das würde nämlich kein Backup erstellen).
Um ein Backup zu erstellen genügt es, in der FHEM [[PGM2|Benutzeroberfläche]] im [[Konfiguration#Befehl-Eingabefeld|Befehls-Eingabefeld]] den Befehl <code>backup</code> zu schreiben und mit {{Taste|Enter}} auszuführen.


Danach findet sich eine Backupdatei in dem oben genannten Verzeichnis. In der Fhem Logdatei sollte ein Eintrag
Danach findet sich eine Backupdatei in dem oben genannten Verzeichnis. In der FHEM Logdatei sollte ein Eintrag
:<code>backup done: FHEM-&lt;Datum&gt;_&lt;Build&gt;.tar.gz (&lt;Größe&gt; Bytes)</code>
:<code><nowiki>backup done: FHEM-<Datum>_<Uhrzeit>.tar.gz (<Größe> Bytes)</nowiki></code>
zu finden sein.  
zu finden sein.  


== Backup manuell ausführen (Weboberfläche) ==
== Backup manuell ausführen (Weboberfläche) ==
Der Backup-Befehl kann in die Weboberfläche als manuell ausführbare Aktion eingebunden. Das lässt sich mit dem folgenden Code in der fhem.cfg erreichen:
Der Backup-Befehl kann auf verschiedene Arten in die Weboberfläche als manuell ausführbare Aktion eingebunden werden. Beispielsweise kann der Backup-Befehl in das linke Auswahlmenü von FHEM aufgenommen werden. Hierzu in das Attribut <code>menuEntries</code> der gewünschten [[FHEMWEB]]-Instanz folgendes aufnehmen:
attr WEB menuEntries Backup,/fhem?cmd=backup
 
Nachfolgend wird ein anderer Ansatz mit erweiterter Funktionalität verfolgt. Ein [[dummy]]-Device wird im Raum Server angelegt und mit dem [[WebCmd|webCmd]] "Ausführen" versehen. Ein Klick auf den Link "Ausführen" des dummy-Devices erzeugt einen Event, der per [[notify]] das Backup startet. Dazu sind folgende Definitionen in der [[Konfiguration]] einzurichten:


#########################################################################
## Funktion......: FHEM Backup
## Besonderheiten: Manuelles Backup
#########################################################################
  define SYS_Backup dummy
  define SYS_Backup dummy
  attr SYS_Backup alias FHEM Backup ausführen
  attr SYS_Backup alias FHEM Backup ausführen
Zeile 35: Zeile 36:
  define SYS_BackupRun notify SYS_Backup:* backup
  define SYS_BackupRun notify SYS_Backup:* backup
  attr SYS_BackupRun room Server
  attr SYS_BackupRun room Server
#########################################################################


Alternativ kann man das notify noch etwas weiter aufbohren, dann wird in der dummy-Variablen angezeigt, welche Backups bereits gemacht wurden. Nicht vergessen, den Pfad einzutragen!
Alternativ kann man das notify noch so erweitern bzw. abändern, dass im state des dummy-Devices angezeigt wird, welche Backups bereits ausgeführt wurden. Zur Änderung des notify ruft man die [[Konfiguration#Objektdetails|Objektdetails]] des notify-Devices auf, klickt auf das {{Taste|DEF}} und kopiert den nachfolgenden Code als vollständigen Ersatz des alten Codes in das Editorfenster. Anschließend auf {{Taste|modify SYS_BackupRun}} klicken.


Der folgende Code ist in die Datei [[99_myUtils_anlegen|99_myUtils.pm]] einzuarbeiten
Code für den {{Taste|DEF}}-Bereich des notify SYS_BackupRun (im Code das Backup-Verzeichnis ./backup gegebenenfalls noch an eigene Wünsche anpassen):


#########################################################################
## Funktion......: FHEM Backup
## Besonderheiten: Anzeige der vorhandenen Backups im dummy
#########################################################################
  SYS_Backup:* {
  SYS_Backup:* {
  fhem("backup");;
  fhem("backup");
  opendir DIR, "Hier_den_Pfad_zu_Eurem_Backupverzeichnis" or die $!;;
  opendir DIR, "./backup" or die $!;
  my $mybackups = "";;
  my @mybackups =();
  while(my $file = readdir DIR){  
  while(my $file = readdir DIR){  
   next if($file eq "." || $file eq "..");;
   next if($file eq "." || $file eq "..");
   $mybackups = $mybackups."$file<br>";;
   push(@mybackups,$file);
  }
  }
  closedir DIR;;
  closedir DIR;
  fhem("set SYS_Backup ".$mybackups);;
@mybackups = join("<br>", sort(@mybackups) );
  fhem("set SYS_Backup @mybackups");
  }
  }
#########################################################################
 
Eine ähnliche Lösung mit Auslagerung des Codes in [[99_myUtils_anlegen|99_myUtils]]: {{Link2Forum|Topic=42231|Message=388352}}


== Backup automatisch ausführen ==
== Backup automatisch ausführen ==
Die regelmäßige automatische Erstellung einer Datensicherung lässt sich mit folgenden Einträgen in der fhem.cfg erreichen:
Die regelmäßige automatische Erstellung einer Datensicherung unter Nutzung des oben gezeigten Codes (dummy, notiy) lässt sich mit folgendem [[at]] in der Konfiguration erreichen:


#########################################################################
## Funktion......: FHEM Backup
## Besonderheiten: Autom. Backup
#########################################################################
  define NTFY_BackupRun at *23:59:00 set SYS_Backup Ausführen
  define NTFY_BackupRun at *23:59:00 set SYS_Backup Ausführen
  attr NTFY_BackupRun room Server
  attr NTFY_BackupRun room Server
#########################################################################


Damit wird täglich um 23:59 ein Backup erstellt.
Alternativ kann ohne Verwendung des oben gezeigten Codes zur automatischen Sicherung ein at definiert werden, das beispielsweise täglich lediglich backup startet:
 
define AT_Backup at *23:59:00 backup


== Backup vor Update ==
== Backup vor Update ==
Ist in der fhem.cfg der Eintrag
Ist in der Konfiguration der Eintrag
:<code>attr global backup_before_update 1</code>
:<code>attr global backup_before_update 1</code>
enthalten, wird vor der Durchführung eines Update erst eine Datensicherung in das festgelegte Backup Verzeichnis durchgeführt.
enthalten, wird vor der Durchführung eines Update erst eine Datensicherung in das festgelegte Backup Verzeichnis durchgeführt.

Aktuelle Version vom 16. April 2020, 20:02 Uhr


backup
Zweck / Funktion
Datensicherung der FHEM-Installation
Allgemein
Typ Befehl
Details
Dokumentation EN / DE
Support (Forum) Sonstiges
Modulname 98_backup.pm
Ersteller rudolfkoenig (Forum / Wiki)
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!
Emblem-question-yellow.svgDie Datensicherung kann je nach verwendeter Server Hardware recht lange dauern. Wird mit global attribute backupdir das lokale Verzeichnis auf ein anderes Laufwerk umgelenkt kann es bei Schwierigkeiten mit diesem Laufwerk (Netzwerk) zu extremen Blockaden des gesamten Systems kommen.

Für Datensicherungszwecke ist in FHEM der Befehl backup integriert.

Im Auslieferungszustand von FHEM werden die erstellten Backups im Ordner ./fhem/backup abgelegt. Die Datensicherung umfasst das komplette FHEM-Verzeichnis. Damit sind alle angepassten und selbst erstellten Dateien und Icons enthalten. Das Backup wird als .tar.gz Datei abgelegt und trägt dabei im Namen das Datum und die Uhrzeit, an dem das Backup ausgeführt wurde.

Der backup Befehl blockiert seit Dezember 2017 nicht mehr und wird unabhängig vom Aufruf im Hintergrund ausgeführt.

Weitere Details zu dem Befehl backup können der commandref/backup entnommen werden.

Backup manuell ausführen (Eingabefeld)

Um ein Backup zu erstellen genügt es, in der FHEM Benutzeroberfläche im Befehls-Eingabefeld den Befehl backup zu schreiben und mit Enter auszuführen.

Danach findet sich eine Backupdatei in dem oben genannten Verzeichnis. In der FHEM Logdatei sollte ein Eintrag

backup done: FHEM-<Datum>_<Uhrzeit>.tar.gz (<Größe> Bytes)

zu finden sein.

Backup manuell ausführen (Weboberfläche)

Der Backup-Befehl kann auf verschiedene Arten in die Weboberfläche als manuell ausführbare Aktion eingebunden werden. Beispielsweise kann der Backup-Befehl in das linke Auswahlmenü von FHEM aufgenommen werden. Hierzu in das Attribut menuEntries der gewünschten FHEMWEB-Instanz folgendes aufnehmen:

attr WEB menuEntries Backup,/fhem?cmd=backup

Nachfolgend wird ein anderer Ansatz mit erweiterter Funktionalität verfolgt. Ein dummy-Device wird im Raum Server angelegt und mit dem webCmd "Ausführen" versehen. Ein Klick auf den Link "Ausführen" des dummy-Devices erzeugt einen Event, der per notify das Backup startet. Dazu sind folgende Definitionen in der Konfiguration einzurichten:

define SYS_Backup dummy
attr SYS_Backup alias FHEM Backup ausführen
attr SYS_Backup room Server
attr SYS_Backup webCmd Ausführen
define SYS_BackupRun notify SYS_Backup:* backup
attr SYS_BackupRun room Server

Alternativ kann man das notify noch so erweitern bzw. abändern, dass im state des dummy-Devices angezeigt wird, welche Backups bereits ausgeführt wurden. Zur Änderung des notify ruft man die Objektdetails des notify-Devices auf, klickt auf das DEF und kopiert den nachfolgenden Code als vollständigen Ersatz des alten Codes in das Editorfenster. Anschließend auf modify SYS_BackupRun klicken.

Code für den DEF-Bereich des notify SYS_BackupRun (im Code das Backup-Verzeichnis ./backup gegebenenfalls noch an eigene Wünsche anpassen):

SYS_Backup:* {
fhem("backup");
opendir DIR, "./backup" or die $!;
my @mybackups =();
while(my $file = readdir DIR){ 
  next if($file eq "." || $file eq "..");
  push(@mybackups,$file);
}
closedir DIR;
@mybackups = join("
", sort(@mybackups) ); fhem("set SYS_Backup @mybackups"); }

Eine ähnliche Lösung mit Auslagerung des Codes in 99_myUtils: Beitrag

Backup automatisch ausführen

Die regelmäßige automatische Erstellung einer Datensicherung unter Nutzung des oben gezeigten Codes (dummy, notiy) lässt sich mit folgendem at in der Konfiguration erreichen:

define NTFY_BackupRun at *23:59:00 set SYS_Backup Ausführen
attr NTFY_BackupRun room Server

Alternativ kann ohne Verwendung des oben gezeigten Codes zur automatischen Sicherung ein at definiert werden, das beispielsweise täglich lediglich backup startet:

define AT_Backup at *23:59:00 backup

Backup vor Update

Ist in der Konfiguration der Eintrag

attr global backup_before_update 1

enthalten, wird vor der Durchführung eines Update erst eine Datensicherung in das festgelegte Backup Verzeichnis durchgeführt.