automatisches Backup + Kopie auf NAS + löschen alter Backups

Begonnen von yersinia, 10 Mai 2018, 11:57:27

Vorheriges Thema - Nächstes Thema

Otto123

Hi,

das ist nur ein Stück Perlcode, der ist so wie er ist zum Test für die FHEM Kommandozeile geeignet (nicht für die Raw Def, da müssten noch \ ans Zeilenende).
Das kann man mit "irgendwas" starten, wie es beliebt: Zeitgesteuert mit einem DOIF ähnlich wie in #5 oder einem at.
Man kann das in eine Perl Sub packen die man nach dem Backup aufruft, dann muss man die Anzahl der Semikolon jeweils halbieren (nur eins schreiben)

Ich bin mir selbst noch nicht ganz sicher wie ich das verankere, ich hatte zu dem Zeitpunkt nur zufällig ein paar Systeme "in der Hand" wo ich das dringen machen musste, weil sich die Backups seit 3 Jahren häuften und die SD Card kurz vor voll war.

Ich würde das eher in größeren Abständen aufrufen ...

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

cmonty14

Hallo Otto,

ganz offen gesagt: ich habe nicht verstanden, wie dies umzusetzen ist.
Meine Kenntnisse in perl reichen hier offensichtlich nicht aus.

Aber ich habe einen Verbesserungsvorschlag.
Üblicherweise beinhaltet einen Backup-Strategie eine Retention-Time.
Lässt sich eine Funktion bauen, die
- prüft, welche Retention-Time für ein Backup definiert ist
- abhängig von dem Prüfergebnis, d.h. Retention-Time überschritten, das Log entfernt?

Gruß
Thomas

Otto123

Hallo Thomas,

sicher kann man eine solche Funktion bauen - das war hier aber nicht die Frage. Ich habe nur ein Stück Perlcode getestet und aus meiner Sicht etwas verbessert.

Allerdings verstehe ich nicht, was dein zweiter Punkt für einen Sinn ergeben soll? Das Thema war löschen alter Backups und nicht löschen alter Logs
Zitat- abhängig von dem Prüfergebnis, d.h. Retention-Time überschritten, das Log entfernt?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

MadMax-FHEM

Für das Löschen alter Logs bietet doch fhem selbst Mechanismen...

narchive etc.

https://wiki.fhem.de/wiki/Logfiles_archivieren

Gruß, Joachim

P.S.: und mit diesem Beitrag bin ich dann auch gleich "Mitleser" ;)
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Dirk070

Zitat von: cmonty14 am 04 Oktober 2020, 10:49:11
Hallo Otto,
könntest du bitte erläutern, was in FHEM angelegt werden muss um diesen Code für Backup-Cleanup auszuführen?

Danke.

Wenn ich mich einmischen darf  ;)

Definiere einen DOIF in FHEM und packe dort das Coding rein.

Dann die folgenden Attribute (als Attribut-Wert-Päärchen):

do  always

icon  system_backup

stateFormat  next backup: timer_01_c01


Das Icon ist natürlich reine Optik  :)

So läuft das Script jeden Montag um 00:10

Helmi55

@yersina
Servus
habe versucht nach deiner Anleitung meine alten Backupfiles in FHEM zu löschen
defmod di_DelBU DOIF ([09:57:00]) \
("find /opt/fhem/backup -type f -mtime +1 -delete") DOELSE
attr di_DelBU do always


Leider werden die Files älter 1 Tag nicht gelöscht.
Hab ich was falsch verstanden oder etwas falsch gemacht?

Danke dir
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

Otto123

#21
Hallo Helmut,

der Code selbst funktioniert einwandfrei, aber Fehlerausgaben sollten im Log landen. Steht da was?
Was bekommst Du mit dem Befehl in der FHEM Kommandozeile zurück.
{qx(find /opt/fhem/backup -type f -mtime +1 -ls)}

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Helmi55

Servus Otto

263388  37452 -rw-r--r--   1 fhem     dialout  38346997 Mär 18 10:34 /opt/fhem/backup/FHEM-20210318_103435.tar.gz


Ist das ein Berechtigungsproblem? Gehört  fhem - dialaut?

Gruß
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

Wernieman

Wenn User:FHEM ist es kein Berechtigungsproblem. Denn schließlich darf der User fhem in Deinem Beispiel "rw".

Es ist ein Gängiger Irrglaube, das als Gruppe immer "dialout" sein muß. Auf vielen System ist die default Gruppe beim user fhem sogar "fhem" ..



Nächste Frage: ein backup anlegen funktioniert doch?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Otto123

Berechtigung war meine Vermutung, sieht aber richtig aus - ist es also offenbar nicht.
Im Log steht nichts?

Wenn Du ein Terminal aufmachst und den Befehl mal dort eingibst?

sudo -su fhem find /opt/fhem/backup -type f -mtime +1 -delete

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Helmi55

HI Otto

Danke für deine Hilfe.
Im Terminal funktioniert der Befehl und ich habe dieses DOIF nun in einem meiner 2 ProdSystemen getestet und hier funktioniert es.
Anscheinend ist da was im Testsystem schiefgelaufen.......
Werde das Testsystem neu aufsetzen

Nice weekend
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

Otto123

#26
Hallo,

da ich irgendwie Bedenken habe jeden Tag etwas zu löschen und dann wieder zu beschreiben (damit nicht das gleiche passiert, wie wenn man jeden Tag mit den Schuhen über die gleiche Stelle schlurft) habe ich mal die Logik etwas erweitert:
Ein Dummy zur Ansicht und ein notify (kann man anders stricken - war zum testen)
Die Backups werden - bis auf die letzten 12 - erst gelöscht wenn die Platte zu 2/3 gefüllt ist. Das Ende der Backuproutine welches die Backups auf den externen Server schiebt, triggert diesen Vorgang.
defmod n_cleanupBackup notify BackupFhem:gesichert {\
my $BackupDir = AttrVal("global", "backupdir", "backup");;\
$BackupDir.="/FHEM-*.tar.gz";;\
my $BackupsMax = 12;;\
my $BackupsCurrent = qx(ls -A $BackupDir | wc -l);;\
my $BackupsDelete = $BackupsCurrent - $BackupsMax;;\
my @array=(split ' ',qx(df $BackupDir |sed -e '1d'));;\
$array[-2]=~ s/\D//g;;\
fhem("setreading BackupFhem percent $array[-2];;\
   setreading BackupFhem used $array[-3];;\
   setreading BackupFhem free $array[-4];;\
   setreading BackupFhem size $array[-5]");;\
if ($BackupsDelete > 0 and $array[-2] > 66)\
  {\
    my $FilesDel = join "|",split "\n",qx(ls -d $BackupDir | head -$BackupsDelete);;\
    my $BackupDelete = qx(ls -d $BackupDir | head -$BackupsDelete | xargs rm);;\
    if ($BackupDelete eq "") {Log 1, "Es wurden $BackupsDelete alte Backupfiles gelöscht: $FilesDel"} else {Log 1, "Es trat ein Fehler auf $BackupDelete"};;\
  }\
}
attr n_cleanupBackup room backup

defmod BackupFhem dummy
attr BackupFhem comment percent:gesichert {my $s=(split ' ',qx(df ./backup |sed -e '1d'))[-2] ;;$s=~ s/\D//g;;$s}
attr BackupFhem room backup
attr BackupFhem userReadings platte:gesichert {qx(df ./backup |sed -e '1d')}


Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Helmi55

Hallo Otto
Danke. ich hatte vergessen zu erwähnen das ich das Backup auf Synology mit dem SSFile mache und ich habe mir nur
hier den Teil zum Löschen der alten BU auf dem RPi "geklaut"
Werde hier natürlich in der Produktion auch noch mehrere Tage aufheben - war nur zum Testen mit dem "1"

Gruß
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/