Hauptmenü

Automatisches Backup

Begonnen von raspklaus, 19 März 2015, 11:37:54

Vorheriges Thema - Nächstes Thema

raspklaus

Hallo zusammen,

im Threat http://forum.fhem.de/index.php/topic,30873.msg234412.html#msg234412

wurde das folgende Backupscript vorgestellt

{ `mkdir savedir` }

define backupCfg notify global:SAVE {\
  my $now = TimeNow();; $now =~ s/ /_/g;; \
  `cp $attr{global}{configfile} ./savedir/fhem.cfg.$now`;;\
  `cp $attr{global}{statefile} ./savedir/fhem.state.$now`;;\
}


Ich habe das so übernommen, siehe Anhang bekomme aber die folgende Fehlermeldung

2015.03.19 11:15:06 3: backupCfg return value: Can't modify single ref constructor in scalar assignment at (eval 438143) line 1, at EOF
syntax error at (eval 438143) line 1, at EOF


Was läuft da schräg ?

Icinger

Ich würd mal sagen, du hast einen Code, der fürs Config-File gedacht war, direkt in ein Def kopiert.

Nimm die ganzen Backslashes raus, dann klappts (gerade getestet).
{ my $now = TimeNow();; $now =~ s/ /_/g;  `cp $attr{global}{configfile} ./savedir/fhem.cfg.$now`;  `cp $attr{global}{statefile} ./savedir/fhem.state.$now`;}

lg, Ici
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

marvin78

Mach mal die ganzen \ raus. Die braucht man nicht, wenn man im DEF des Devices arbeitet. Außerdem muss man dort in diesem Fall auch die ; nicht verdoppeln. So müsste es im DEF aussehen:

global:SAVE {
  my $now = TimeNow();
  $now =~ s/ /_/g;
  `cp $attr{global}{configfile} ./savedir/fhem.cfg.$now`;
  `cp $attr{global}{statefile} ./savedir/fhem.state.$now`;
}


Ich würde das ganze aber in eine sub in einer myUtils auslagern. Also so

global:SAVE {myBackup}

sub myBackup() {
  my $now = TimeNow();
  $now =~ s/ /_/g;
  `cp $attr{global}{configfile} ./savedir/fhem.cfg.$now`;
  `cp $attr{global}{statefile} ./savedir/fhem.state.$now`;
}

raspklaus