Shell-Script - Automatisches Löschen älterer Dateien bei Überschreitung einer festgelegten Verzeichnisgröße

  • komme nicht so recht weiter...
    Meine Kamera erzeugt täglich einen neuen Ordner mit Überwachungs-Aufzeichnungen auf meinem NAS, die ich via Cloud Drive Sync automatisiert in die Dropbox repliziere. Nun habe ich dort nur begrenzt Speicherplatz verfügbar und möchte z.B ab 3 GByte die ältesten Aufnahmen auf dem NAS per shell script über cronjob täglich einmal löschen lassen.
    Habe mich gerade ein wenig in das Thema shell script eingelesen und komme aber nicht so recht weiter. Mittels "[/] # find" kann ich zwar Dateien nach bestimmten Kriterien listen aber weder -delete noch -exec rm ist dort als Option verfügbar.
    Mit "[/] # du" habe ichs auch schon versucht, damit kann ich zwar die Verzeichnisgröße ermitteln, doch wie gehts dann weiter im script. Habe ich die falschen Zutaten /Commands gewählt oder wie kann ich nun die überschüssigen Dateien löschen.



    Falls relevant: Für den Zugriff aufs NAS benutze ich Windows/Putty /SSH als :admin


    Bin auch für jeden Tip dankbar
    Gruss
    Peter

    Einmal editiert, zuletzt von PPan ()

  • Hi,
    irgendwie hatten wir das schon, egal, wie sieht denn dein Skript aus?

  • Hallo,


    Script habe ich noch keins. Bin wie oben beschrieben, noch am Zutaten sammeln und Testen einzelner Optionen.


    Richtig, es gab schon Beiträge dazu. Die beziehen sich aber meist auf zeitliche Begrenzung, z.B alles löschen was älter als 5 Tage ist usw.
    Das ist aber nicht was ich brauche, da je nach Bewegungserkennung bei mir in unbestimmter Zeit der Dropbox Speicher zulaufen kann.

  • Hier findest schon mal einen guten Ansatz.

  • Hallo Lutz,


    danke für die Hinweise, allerdings bringt mich das momentan nicht wirklich weiter. Hatte bislang hauptsächlich mit M$ Windows Umgebung zu tun und so gut wie nichts mit Linux am Hut.


    Eine Grundsätzliche Frage die sich mir stellt und auf die ich noch keine rechte Antwort gefunden habe ist, welche Linux Befehlsargumente / Optionen stehen mir hier auf dem NAS zur Verfügung.
    Die OS Version kann ich zwar abfragen, allerdings gehen viel Scripte von Argumenten aus die hier nicht vorhanden sind.


    Code
    [/] # cat /proc/version
    Linux version 3.4.6 (root@BuildServer45-1) (gcc version 4.2.1) #1 Tue Apr 19 10:40:51 CST 2016

    Ist das ein von QNAP zugeschnittenes Derivat ? Gibt es dafür eine Befehlssatz-Übersicht ?

  • Ist das ein von QNAP zugeschnittenes Derivat ?

    Ja
    Du hast aber die Möglichkeit mit Entware-ng, vermisste Software zu installieren.

  • OK, hab ich gemacht. Habe dazu aus - [HowTo] Entware-ng und Linux-Pakete installieren - die Paket Variante mit automatischer Erkennung gewählt. Die Installation über GUI im App Center ist auch sauber durchgelaufen.
    Allerdings bekomme ich über die Shell bei [/] # opkg update den Fehler -sh: opkg: command not found. Ich dachte da fehlt bestimmt der Pfad. # echo $PFAD Ausgabe hat es mir auch bestätigt, aber wo sind die Pfade permanent hinterlegt, eine /etc/environment existiert jedenfalls nicht. Was beim durchstöbern zu sehen war, es gibt in /opt eine Entware-ng.sh* und in /opt/bin eine opkg*. Wäre dann der richtige Pfade zum nachtragen /opt/bin ?


    Oh man ... so tief wollte ich eigentlich nicht ins Linux Geschäft eintauchen.


    Danke schon mal, auch für deinen 2 Uhr Nachteinsatz

  • Die Variable $PFAD gibt es nicht. Richtig wäre $PATH


    Hast du das NAS und/oder die SSH-Session schon neu gestartet?

  • Das ist ein Schreibfehler von mir im Beitrag. Sonst hätte ich ja kein Ergebnis sondern eine Fehlermeldung bekommen, was nicht der Fall war.


    Ja, beides neu gestartet.

  • Die Suchpfade stehen in /opt/etc/init.d/rc.unslung


    Sonst hätte ich ja kein Ergebnis sondern eine Fehlermeldung bekommen, was nicht der Fall war

    Es hätte keine Fehler gegeben, nur eine leere Zeile.

    Einmal editiert, zuletzt von frosch2 ()

  • /opt/etc/init.d/ ist bei mir ein leeres Verzeichnis.

  • Dann würde ich entware-ng reinstallieren.

  • hatte ich auch schon...hm da fällt mir gerade was ein, mein NAS darf derzeit nur fürs dropbox'en ins Internet. Die Installation werde ich mal mit uneingeschränktem Internet-Zugriff probieren.


    Schönen Vaddertach




    EDIT
    26.05.2017 : Tatsächlich, daran lag es. Jetzt ist alles da, auch die Pfade stimmen jetzt. Na danke, was sind das für Sachen...


    Jetzt habe ich auch unter # find viel mehr Optionen. Ich denke jetzt komme ich erst einmal alleine weiter.
    Danke für eure Unterstützung. Sobald mein Script fertig habe, werde ich's mitteilen.


    Gruß
    Peter

    2 Mal editiert, zuletzt von PPan ()

  • Habe erst mal bescheiden angefangen und mich an Lutz Beispiel Script aus 2016 - Automatische Datei-Bereinigung - gehalten.


    Hier mein vorläufiges Script, löscht *.avi älter als 3 Tage

    Bash
    #!/bin/sh/opt/bin/find /share/Recordings/ -type f -mtime +3 -name "*.avi" -exec rm {} \;


    Berechtigungen gesetzt

    Code
    chmod 755 /share/homes/Peter/shellscript/del_files_older_3days.sh


    Crontab Eintrag

    Code
    echo "45 23 * * * /share/homes/Peter/shellscript/del_files_older_3days.sh" >> /etc/config/crontab
    crontab /etc/config/crontab


    Wie könnte man eine Verzeichnisgröße überwachen und z.B auf 4Gb begrenzen?


    Danke für eure Unterstützung
    Peter

    3 Mal editiert, zuletzt von PPan ()