Hallo,
Aktuell suche ich Tester um eine neue Version von 98_backup.pm zu testen.
Ihr benötigt ein aktuelles FHEM, nicht älter wie Anfang der Woche.
https://github.com/LeonGaultier/fhem-backup/archive/devel.zip
Würde mich sehr über den einen oder anderen Tester freuen.
Grüße
Morgen Nachmittag kann ich es auf meiner Spielweise antesten.
Gesendet von meinem Doogee S60 mit Tapatalk
-rw-r--r-- 1 fhem dialout 172893814 Mär 28 17:57 FHEM-20190328_175301.tar.gz # Altes backup
-rw-r--r-- 1 fhem dialout 1552906240 Mär 28 18:02 FHEM-20190328_180041.tar.gz # devel-backup
Nachdem ich mich ueber die Groesse gewundert habe, ist nach einem tar list klar, dass die
Zieldatei nicht komprimiert ist.
Gruss Helmut
Ich Danke Dir. Das ist in der Tat seltsam. Schaue ich mir an.
Aber sonst hat alles soweit geklappt?
Sollte gefixt sein, magst noch mal testen?
Das "z" gehoert vor das "f", denn dem "f" muss der Dateiname nachfolgen.
$tarOpts = 'cfz';
$tarOpts = 'chfz';
So wird die tar-Datei immer noch nicht komprimiert.
Bei der Suche nach meinem Unterverzeichnis in "log" bin ich darauf gestossen, dass "log"
doppelt gesichert wird. Einmal als "log/" und das andere Mal als "./log"". Das betrifft aber nur
"log" und ein weiteres Verzeichnis das ich selbst angelegt habe, das also nicht zum Lieferumfang
von fhem gehoert.
Gruss Helmut
Zitat von: helmut am 28 März 2019, 19:14:14
Das "z" gehoert vor das "f", denn dem "f" muss der Dateiname nachfolgen.
$tarOpts = 'cfz';
$tarOpts = 'chfz';
So wird die tar-Datei immer noch nicht komprimiert.
Bei der Suche nach meinem Unterverzeichnis in "log" bin ich darauf gestossen, dass "log"
doppelt gesichert wird. Einmal als "log/" und das andere Mal als "./log"". Das betrifft aber nur
"log" und ein weiteres Verzeichnis das ich selbst angelegt habe, das also nicht zum Lieferumfang
von fhem gehoert.
Gruss Helmut
Ok das muss ich mir dann doch noch mal in Ruhe anschauen.
Zum Thema log, kann es sein das Du das globale Attribut logdir auf ./log gesetzt hast? Das muss ich dann noch abfangen. Da ./log eh im Standard gesichert wird.
Zitat von: CoolTux am 28 März 2019, 19:25:40
Zum Thema log, kann es sein das Du das globale Attribut logdir auf ./log gesetzt hast? Das muss ich dann noch abfangen. Da ./log eh im Standard gesichert wird.
Du machst einen Denkfehler bezüglich der Betrachtung des Standards! Es gibt die Möglichkeit, die Logfiles mit einem Platzhalter %L zu definieren, der voraussetzt, dass es ein Attribut logdir gibt.
Warum ermittelst Du nicht die FileLog devices und wertest das INTERNAL 'logfile' aus? Damit kannst Du alle Speicherorte von Logfiles finden, egal wo sie angelegt sind und unabhängig davon, ob sie über logdir definiert sind oder sonstwo (z.B. mit absoluten Pfadangaben) im Dateisystem liegen. Auch die Berücksichtigung von logdir stellt noch lange nicht sicher, dass Du alle logfiles sicherst.
Zum Thema komprimieren. Ich habe das gerade getestet und bei mir macht es keinen Unterschied ob ich über pipe und gzip (altes Verhalten) oder mittels z am Ende komprimiere. Die Größe ist immer gleich.
Nut bei ohne z und ohne gzip pipe wird es größer
Zitat von: betateilchen am 28 März 2019, 19:31:52
Du machst einen Denkfehler bezüglich der Betrachtung des Standards! Es gibt die Möglichkeit, die Logfiles mit einem Platzhalter %L zu definieren, der voraussetzt, dass es ein Attribut logdir gibt.
Warum ermittelst Du nicht die FileLog devices und wertest das INTERNAL 'logfile' aus? Damit kannst Du alle Speicherorte von Logfiles finden, egal wo sie angelegt sind und unabhängig davon, ob sie über logdir definiert sind oder sonstwo (z.B. mit absoluten Pfadangaben) im Dateisystem liegen. Auch die Berücksichtigung von logdir stellt noch lange nicht sicher, dass Du alle logfiles sicherst.
Die Idee ist ja ganz gut, aber wie komme ich an die nicht mehr aktuellen Logfiles. Also Logfiles aus dem vorherigen Monaten zum Beispiel.
Abfragen was für logfiles es gibt.
Daraus dann die Pfade extrahieren.
Duplikate filtern.
Fertig.
Bin kein Programmierer, denk aber im Prinzip ist das so gemeint.
Gesendet von meinem Doogee S60 mit Tapatalk
Zitat von: CoolTux am 28 März 2019, 19:25:40
Zum Thema log, kann es sein das Du das globale Attribut logdir auf ./log gesetzt hast? Das muss ich dann noch abfangen. Da ./log eh im Standard gesichert wird.
logdir log/
Zum Komprimieren: Das habe ich eben von Hand probiert und muss Dir recht geben. Und - Asche auf mein Haupt,
beim zweiten Mal habe ich wohl das reload vergessen. Sorry fuer die Umstaende. Nun sieht es gut aus.
Gruss Helmut
Zitat von: helmut am 28 März 2019, 20:13:29
logdir log/
Zum Komprimieren: Das habe ich eben von Hand probiert und muss Dir recht geben. Und - Asche auf mein Haupt,
beim zweiten Mal habe ich wohl das reload vergessen. Sorry fuer die Umstaende. Nun sieht es gut aus.
Gruss Helmut
Kein Problem. Ich werde Udo seine Idee weiter verfolgen. Finde sie erstmal besser wie das Auslesen von logdir.
Zitat von: Frank_Huber am 28 März 2019, 20:10:32
Abfragen was für logfiles es gibt.
Daraus dann die Pfade extrahieren.
Duplikate filtern.
Fertig.
Bin kein Programmierer, denk aber im Prinzip ist das so gemeint.
Genau so war das gedacht :) Deshalb hatte ich auch "logfile" als Internal genannt und nicht "currentlogfile"
Zitat von: betateilchen am 28 März 2019, 21:20:34
Genau so war das gedacht :) Deshalb hatte ich auch "logfile" als Internal genannt und nicht "currentlogfile"
Ist umgesetzt. Können bitte noch ein oder zwei Leute testen. Danke
Im Zuge dessen ist mir aufgefallen das je nachdem welche Art der Konfig man nimmt entweder configdb.conf oder fhem.cfg doppelt ins Archiv geschrieben werden. Einmal mit ./ und einmal ohn ./ (da aus global ausgelesen)
Heute Nacht liefen zwei meiner FHEM Instanzen mit dem neuen backup. Hat alles super geklappt und die Größe ist auch gleich geblieben.
@Udo
Habe gesehen Du hattest gestern configdb eingecheckt mit den neuen Hashs. Mir ist allerdings aufgefallen das eh alle Dateien und Verzeichnisse ausgehend von der obersten Ebene von $modpath gesichert werden.
Wäre wenn also nur noch interessant für User die ihre DB Datei wo anders haben. Was denkst Du?
Hallo und guten Morgen,
hab die neue Version gerade getestet - macht was es soll. Daumen hoch.
vg Jens
Zitat von: Newbie am 29 März 2019, 08:36:42
hab die neue Version gerade getestet - macht was es soll. Daumen hoch.
Dem schliesse ich mich an.
Gruss Helmut
Zitat von: CoolTux am 29 März 2019, 07:28:41
@Udo
Habe gesehen Du hattest gestern configdb eingecheckt mit den neuen Hashs. Mir ist allerdings aufgefallen das eh alle Dateien und Verzeichnisse ausgehend von der obersten Ebene von $modpath gesichert werden.
Wäre wenn also nur noch interessant für User die ihre DB Datei wo anders haben. Was denkst Du?
Genau das ist das Szenario. Bei mir liegt die Datenbank immer außerhalb des FHEM Verzeichnisses.
Zitat von: betateilchen am 29 März 2019, 13:12:26
Genau das ist das Szenario. Bei mir liegt die Datenbank immer außerhalb des FHEM Verzeichnisses.
Ok dann baue ich das noch mit ein, aber nur sofern der Ort ausserhalb von $modpath ist.
Ich war mal so frech was zu vereinfachen und $attr gegen AttrVal zu tauschen, das macht den Code auch gleich wesentlich kürzer:
@@ -78,9 +78,10 @@
my ( $cl, $param ) = @_;
my $byUpdate = ( $param && $param eq 'startedByUpdate' );
- my $modpath = AttrVal( 'global', 'modpath', '' );
- my $configfile = AttrVal( 'global', 'configfile', '' );
- my $statefile = AttrVal( 'global', 'statefile', '' );
+ my $modpath = AttrVal( 'global', 'modpath', '.' );
+ my $configfile = AttrVal( 'global', 'configfile', './fhem.cfg' );
+ my $statefile = AttrVal( 'global', 'statefile', './log/fhem.save' );
+ my $dir = AttrVal( 'global', 'backupdir', './backup');
my $now = gettimeofday();
my @t = localtime($now);
$statefile = ResolveDateWildcards( $statefile, @t );
@@ -95,21 +96,7 @@
if ( configDBUsed() );
# set backupdir
- my $backupdir;
- if ( !defined( $attr{global}{backupdir} ) ) {
- $backupdir = $modpath . '/backup';
- }
- else {
- if ( $attr{global}{backupdir} =~ m/^\/.*/ ) {
- $backupdir = $attr{global}{backupdir};
- }
- elsif ( $attr{global}{backupdir} =~ m/^\.+\/.*/ ) {
- $backupdir = $modpath . '/' . $attr{global}{backupdir};
- }
- else {
- $backupdir = $modpath . '/' . $attr{global}{backupdir};
- }
- }
+ my $backupdir = $dir =~ m/^(\.(\/.*)$/ ? "$modpath$1" : $dir =~ m/^\.\.\// ? "$modpath/$dir" : $dir;
# create backupdir if not exists
if ( !-d $backupdir ) {
@@ -216,14 +203,8 @@
sub createArchiv($$$) {
my ( $backupdir, $cl, $byUpdate ) = @_;
- my $backupcmd =
- ( !defined( $attr{global}{backupcmd} )
- ? undef
- : $attr{global}{backupcmd} );
- my $symlink =
- ( !defined( $attr{global}{backupsymlink} )
- ? 'no'
- : $attr{global}{backupsymlink} );
+ my $backupcmd = AttrVal("global","backupcmd",undef);
+ my $symlink = AttrVal("global","backupsymlink","no");
my $tarOpts;
my $msg;
my $ret;
Gruß
Dan
äh...
+ my $modpath = AttrVal( 'global', 'modpath', '.' );
+ my $configfile = AttrVal( 'global', 'configfile', './fhem.cfg' );
+ my $statefile = AttrVal( 'global', 'statefile', './log/fhem.save' );
+ my $dir = AttrVal( 'global', 'backupdir', './backup');
liest sich unlogisch. Wäre es nicht sinnvoller
+ my $modpath = AttrVal( 'global', 'modpath', '.' );
+ my $configfile = AttrVal( 'global', 'configfile', "$modpath/fhem.cfg" );
+ my $statefile = AttrVal( 'global', 'statefile', "$modpath/log/fhem.save" );
+ my $dir = AttrVal( 'global', 'backupdir', "$modpath/backup");
zu verwenden?
Zitat von: betateilchen am 29 März 2019, 14:30:30
äh...
+ my $modpath = AttrVal( 'global', 'modpath', '.' );
+ my $configfile = AttrVal( 'global', 'configfile', './fhem.cfg' );
+ my $statefile = AttrVal( 'global', 'statefile', './log/fhem.save' );
+ my $dir = AttrVal( 'global', 'backupdir', './backup');
liest sich unlogisch. Wäre es nicht sinnvoller
+ my $modpath = AttrVal( 'global', 'modpath', '.' );
+ my $configfile = AttrVal( 'global', 'configfile', "$modpath/fhem.cfg" );
+ my $statefile = AttrVal( 'global', 'statefile', "$modpath/log/fhem.save" );
+ my $dir = AttrVal( 'global', 'backupdir', "$modpath/backup");
zu verwenden?
Mag sein, ich hatte einfach die Defaultwerte aus einer Standardinstallation genommen.
Gruß
Dan
Danke Euch beiden. Schaue ich mir heute Abend mal in Ruhe an.
Ich kann keine Fehler feststellen. Backup läuft wie zuvor.
Standart FHEM Tagesaktuell, DbLog auf externen MySQL.