Guten Morgen zusammen,
ich lasse einmal die Woche ein Fhem-Backup auf meiner Synology sichern, dazu nutze ich das Modul DbRep. Das funktioniert auch tadellos.
Nun wollte ich dem stets wachsenden Backupverzeichnis vorbeugen und habe noch eine weiter Zeile in das Notify hinzugefügt. Leider wird die Löschung alter Backups aber nicht ausgeführt. Wenn ich die Zeile in der Kommandozeile ausführe werden alte Backups ohne Fehlermeldung gelöscht.
Der komplette notify-Code sieht folgendermaßen aus:
FHEM_Backup_dummy:start_backup {
fhem ("{system('sudo su')};");;
fhem ("{system('sudo mount 192.168.178.15:/volume1/RASPI_USB_BACKUP/FHEM_PI /media/NASbackup')};");;
fhem ("sleep 10; {system('sudo find /media/NASbackup -mtime +40 -type f -exec rm -f {} \;;')}");;
fhem ("set DBLogging_DbRep dumpMySQL clientSide");;
fhem ("set FHEM_JA3_Telegram_Bot silentmsg @757181075 Manuelles FHEM_Backup gestartet.");;
fhem ("set FHEM_Backup_dummy backup_finished");;
}
Konkret geht es mir aber nur um die Zeile :
fhem ("{system('sudo find /media/NASbackup -mtime +40 -type f -exec rm -f {} \;;')}");;
Die Fehlermeldung die ich erhalte ist diese hier: find: Fehlendes Argument für »-exec«.
Hat jemand eine Idee wie ich dieses Systemkommando auch in einem Notify abfeuern kann?
Danke und schönes Wochenende noch,
adrian
DbRep hat eine eingebaute Versionsverwaltung.
Du kannst mit dem Attr dumpFilesKeep einstellen wie viele Backups vorgehalten werden, default 3.
Um die Versionsverwaltung zu aktivieren brauchst du nur das Attr dumpDirLocal entsprechend setzen.
Weitere Informationen findest du sogar speziell für Synology im Abschnitt "b) dumpDirLocal" des Beitrages:
https://wiki.fhem.de/wiki/DbRep_-_Reporting_und_Management_von_DbLog-Datenbankinhalten#2._Einstellungen_des_DbRep-Devices_.28Attribute.29_2
Grüße,
Heiko
Das ist richtig, und das nutze ich auch. Aber das bezieht sich nur auf das Backup innerhalb Fhem's.
Ich schreibe die Backups nocheinmal weiter auf meine Synology, und darauf haf DbRep keinen Zugriff um alte Versionen zu löschen.
Mir geht es tatsächlich um o.g. Coding, warum das in der Kommandozeile funktioniert, aber nicht im Notify.
Gruss
1. Warum hast Du ein
fhem ("{system('sudo su')};");;
Macht hier überhaupt keine Sinn, da hinter dem su kein Kommando kommt
(Abgesehen davon, das Dein FHEM zu viel sudo-Berechtigung hat)
2.
find: Fehlendes Argument für »-exec«.
Bedeutet, das der find-Befehl hinter dem -exec das ";" nicht findet. Dürfte hier also ein ;-Maskierungs-Problem sein. Woher hast Du den Code? Aus dem RAW-Fenster oder aus der Config?
So ein Kompletten Code, mit fast 90% Shell-Anteil würde ich dann eher in ein Externes Script verpacken, das die FHEM Befehle per http/Telnet sendet. Aber das ist nur eine persönliche Individuelle Meinung. Hat den Vorteil, das man mit "" den Code auch Non-Blocking ausgeführt bekommt.