* gelöst * LOG-Dateien vom Backup ausschließen

Begonnen von CoComp, 10 Januar 2020, 19:21:40

Vorheriges Thema - Nächstes Thema

CoComp

Moin,

ich habe 3 Ordner auf meinem NAS gemountet. Dazu habe ich fhem-Verzeichnis NAS erstellt und mounte dahin 2 Ordner auf meinem NAS, in die alle LOG-Dateien und die archivierten LOG Dateien geschrieben werden. Im Verzeichnis /mnt/ habe ich einen Ordner BACKUP angelegt und dort einen Ordner auf meinem NAS gemountet, in das die Backups geschrieben werden. Das klappt auch alles, aber aufgrund der vielen und großen LOG-Dateien ist das Backup-File auf knapp 1 GB angewachsen.

Ich möchte nun die beiden gemounteten Verzeichnisse für  die LOG-Dateien und die archivierten LOG-Dateien ausschließen, da meine NAS-Laufwerke ohnehin in einer Backupstrategie in eine Cloud gesichert werden.

Frage;
Wir kann ich bestimmte Verzeichnisse aus dem Backup von FHEM ausschließen?

CoolTux

Du kannst mit dem globalen Attribut backupcmd einen eignen Backupbefehl festlegen und dort dann auch Deine 2 Verzeichnisse ausschließen
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoComp

Zitat von: CoolTux am 10 Januar 2020, 19:54:14
Du kannst mit dem globalen Attribut backupcmd einen eignen Backupbefehl festlegen und dort dann auch Deine 2 Verzeichnisse ausschließen

Vielleicht denke ich zu kompliziert.

1. Muss ich da explizit die Verzeichnisse aufführen, die gesichert werden soll (Also /opt/fhem mit allen Unterverzeichnissen)
=> das kriege ich hin

2.) oder muss ich die beide Pfade, die ich ausschließen will, nennen.
=> wie mache ich das?

CoolTux

Laut Commandref

Zitatackupcmd
Sie können das Update durch Ihre eigenen Befehle/Skripts durchführen indem Sie dieses Attribut setzen. Wenn dieses Attribut gesetzt ist, dann startet es als ein SHELL-Befehl und erstellt eine durch Leerzeichen getrennte Liste von Dateien/Verzeichnissen als ein Argument zum Befehl, z.B.:
"/etc/fhem.cfg /var/log/fhem/fhem.save /usr/share/fhem/contrib /usr/share/fhem/FHEM /usr/share/fhem/foo /usr/share/fhem/foobar /usr/share/fhem/www"
Bemerkung: Ihr Befehl/Skript muss die Zeichenkette "backup done" zurückgeben oder eine entsprechende Zeichenkette um Fehlermeldungen auszugeben, damit die Zusammenarbeit mit update funktioniert!
Dieses Attribut wird vom backup Befehl benutzt.
Beispiel:
attr global backupcmd /usr/local/bin/myBackupScript.sh

Du schreibst also da den Path zu Deinem Backupscript rein oder schreibst den Backupbefehl den Du verwenden willst da rein.

Einfaches Beispiel:

tar chzf /home/ich/fhemBackup/FHEM.tar.gz /opt/fhem --exclude=/opt/fhem/log1 --exclude=/opt/fhem/log2


Das könnte zum Beispiel da drin stehen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

horchundkuck

#4
Steht zwar gelöst in der Überschrift,

aber klar ist mir das "wie" noch nicht. Auch ich möchte mit exclude im "attr global backupcmd ..." lediglich einen Ordner von der Standardsicherung (vor einem Update) ausschließen.
Konkret geht es um den Ordner /opt/fhem/www/camera, also einen Ordner innerhalb von /opt/fhem/www, der standardmäßig mit gesichert wird. Deshalb möchte ich keine eigenes Script schreiben, sondern lediglich den exclude-Parameter nutzen. Ich habe schon folgende Varianten "getestet":
attr global backupcmd exclude=/www/camera
attr global backupcmd exclude="/www/camera"
attr global backupcmd exclude=/opt/fhem/www/camera
attr global backupcmd exclude="/opt/fhem/www/camera"
attr global backupcmd exclude="*camera*"
attr global backupcmd exclude=.*camera.*
Auch Varianten mit "--exclude" wie in Perl habe ich (mehr aus Verzweiflung) getestet. Viel gelesen und probiert, aber noch nicht am Ziel angekommen.

FHEM update wirft Fehler der folgenden Art:
2024.07.12 17:01:55 2: Backup with command: exclude="*camera*" \"./www" "./FHEM" ....
2024.07.12 17:01:55 1: backup sh: 1: "./www ./FHEM ....
2024.07.12 17:01:55 1: Something went wrong during backup: sh: 1: "./www ./FHEM ...
2024.07.12 17:01:55 1: update was canceled. Please check manually!

Wie lautet da die Syntax? Nutzt/funktioniert das mit dem Attribut exclude bei jemandem? Oder habe ich ein Verständnisproblem?

betateilchen

Du hast den Sinn und Zweck des Attributes falsch verstanden.

Das Attribut heißt "backupcmd" und damit wird immer ein externes Skript benannt, mit dem ein backup ausgeführt werden soll.

Das "exclude" gehört im genannten Beispiel zu dem Befehl tar (Befehl aus dem Betriebssystem, nicht aus FHEM!)

tar chzf <irgendeinFilename> /opt/fhem --exclude=/opt/fhem/log1 ...

und gibt eine Option für tar vor, das innerhalb des angegebenen Skripts ausgeführt wird.

Mit FHEM selbst oder dem backup-Befehl hat das exclude nichts zu tun.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

horchundkuck

Ja, dann habe ich das völlig falsch verstanden. Es kann also nur ein kompletter Befehl oder ein Script, aber kein einzelnes Attribut angegeben werden.
Danke für die Info. Dann werde ich das doch mit einem Script lösen.