Speicherüberlauf vermeiden z.B. bei Kameraaufnahmen (Löschung älterer Dateien)

Begonnen von steffen83, 17 Januar 2019, 12:12:45

Vorheriges Thema - Nächstes Thema

steffen83

Hallo,

ich habe die nachstehenden Scripte zusammengeschrieben, da ich immer das Problem habe, dass meine Kameras die Festplatte an der Fritzbox vollstopfen und ich keinen Speicherplatz mehr hatte. Somit gingen mir natürlich die neusten Aufnahmen verloren.
Diese Scripte dienen nun dazu, dass ein Laufwerk, welches über SMB gemountet ist abgefragt wird, wie voll es ist und nach einer bestimmten Überschreitung dann die ältesten Dateien aus einem bestimmten Ordner gelöscht werden.
Vielleicht geht das auch einfacher, aber für mich gab es nur diesen Weg.

speicher.sh (welche bei mir in /opt/fhem/ liegt) (Denkt daran, dass dieses Script von FHEM ausgeführt werden muss (Rechtevergabe))
#!/bin/bash
string=$(sudo df -h /mnt/uschi/ | sed ':a;N;$!ba;s/\n/ /g'); dname=${string%\%*} ; echo $dname; l1=${#dname}; echo ${dname:l1-2}
perl fhem.pl localhost:7072 "setreading speicherauslastung mntuschi ${dname:l1-2}";

Das Ergebnis, was hier rauskommt ist lediglich die Prozentuale Auslastung des gemounteten Laufwerks uschi

In Fhem nun noch ein AT für eine dauerhafte Ausführung des speicher.sh Scripts
defmod sysmonupdate at +*00:05:00 {system('sudo /opt/fhem/speicher.sh&')}

Ein Dummy in dem die Werte gespeichert werden:
defmod speicherauslastung dummy

Nun noch ein DoIf, welches die Löschung in einem definiertem Ordner vornimmt:
defmod Speicherloeschung DOIF ([speicherauslastung:mntuschi]>80) ({\
system('sudo find /mnt/uschi/TOSHIBA-TransMemory-01/FI9900P_00626E85DB21/. -type f -name "*.*" | tail -n5 | xargs rm -rf') ;;\
})
attr Speicherloeschung do always

Hier werden die ältesten 5 Dateien aus dem Ordner TOSHIBA-TransMemory-01/FI9900P_00626E85DB21/ gelöscht
Raspberry Pi 3 (Noobs, aktuelle Fhem und Pilight) | FHEMduino | HM-OCCU-SDK | HM-Sec-SCo | HM-Sec-SD-2 | HM-CC-RT-DN | HM-LC-Bl1PBU-FM