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