Script zur Automatischen Altdatenbeseitigung als Cronjob

  • Servus Zusammen.


    Auf meinem Weg, im Kampf gegen das Qnap NAS glorreich zu siegen, wollte ich jetzt ein weiteres Problem anpacken, das sich mir nicht im geringsten erschließt :?:.


    Die Situation sieht wie folgt aus: Im Einsatz ist ein QNAP TS-431P mit 4 Platten im RAID 6. Auf einem der Volumes auf dem RAID legen fünf Überwachungskameras fleißig ihre Daten ab. Das ganze läuft ganz dumm einfach nur als Speicher, ohne SurveillanceStation oder sowas. Als ich mit der Einrichtung des NAS begonnen hatte, hatte ich mir mangels vergleichbarem Feature im OS des NAS ein Skript geschrieben, das in einem bestimmten Verzeichnis (dem Kameraverzeichnis) alle Daten löschen soll, die älter als ein angegebener Wert sind (im Moment zwei Tage, wollte das anpassen wenn ich den Speicherbedarf besser kenne). Also sozusagen eine Speicherung von Überwachungsvideos auf Zeit. Mit chmod 777 habe ich dem Skript die nötigen Rechte verliehen. Hier der Code:

    Bash
    #!/bin/sh
    find /share/CACHEDEV1_DATA/DAV -type f -mtime +1 -exec rm {} \;
    echo 'Ich habs geschafft! :)' >> /share/CACHEDEV2_DATA/Admin/log.txt

    (Zeile 3 hab ich später hinzugefügt, um die Ausführung des Skripts zu protokollieren.)


    Wenn ich dieses Skript via SSH aufrufe, funktioniert es wunderbar. Alle älteren Daten werden gelöscht und der Satz mit dem Smiley wird dem log.txt hinzugefügt. Natürlich sollte dieses Skript jetzt regelmäßig ausgeführt werden und dafür wollte ich einen Cronjob anlegen. Dafür habe ich der Crontab folgende Zeile hinzugefügt:

    Code
    0 3 * * * /share/CACHEDEV2_DATA/Admin/del_files_older_2_days.sh

    Täglich um drei Uhr, also. Selbstverständlich habe ich daran gedacht, die crond.sh neuzustarten. Am Nächsten Morgen enthielt meine log.txt die gewünschte Zeile und ich habe die Aktion als Erfolg verbucht und keinen Gedanken mehr daran verschwendet.


    Das ist jetzt eine Woche her und ich habe sieben Einträge in meinem Logfile. Leider funktioniert die Löschung der Daten nicht :cursing:

    Also funktioniert der Cronjob, denn die Zeile wird ins Logfile geschrieben. Nur die wichtige Zeile des Skripts wird nicht ausgeführt. Rufe ich es via SSH auf, funktioniert es tadellos. Habe es eben nochmal probiert. Ich vermute, dass es an einer Rechtesache scheitert. Mein Bescheidenes Halbwissen reicht hier aber leider nicht weiter.

    Vielleicht fällt ja von euch jemandem etwas dazu ein?


    Vielen Dank schonmal im Vorraus!


    Gruß,

    wePsi

  • Hi,

    gib im script mal den kompletten Pfad zu "find" an.

  • Servus,


    Danke für deine prompte Antwort. Bitte korrigiere mich wenn ich da jetzt völlige Unwissenheit demonstriere, aber in den Zeilen, dich ich gepostet hab, ist zu find doch der vollständige Pfad angegeben, nämlich:


    Code
    /share/CACHEDEV1_DATA/DAV
  • Servus,


    Ah verstehe, vielen Dank für den Tipp! Ich baue das gleich mal in das Skript ein!

    Ich werde dann morgen berichten!


    Update: Via Shell lässt sich das Skript so nicht ausführen. Es sieht jetzt so aus:

    Bash
    #!/bin/sh
    /usr/bin/find /share/CACHEDEV1_DATA/DAV -type f -mtime +1 -exec rm {} \;
    echo 'Ich habs geschafft! :)' >> /share/CACHEDEV2_DATA/Admin/log.txt


    Update 2: Okay, Problem gelöst, zu früh gejammert. Der Pfad zu find ist bei mir /opt/bin/find

    Vielen Dank für eure Hilfe. Ich werde morgen berichten.

    Bash
    #!/bin/sh
    /opt/bin/find /share/CACHEDEV1_DATA/DAV -type f -mtime +1 -exec rm {} \;
    echo 'Ich habs geschafft! :)' >> /share/CACHEDEV2_DATA/Admin/log.txt


    Update 3: Es scheint jetzt tatsächlich zu funktionieren. Vielen Dank für eure Hilfe Leute!

    4 Mal editiert, zuletzt von wePsi ()

  • Hallo,

    seit Tagen versuchte ich genau dieses gleiche Problem zu lösen.

    Als script Neuling hatte ich mir die entsprechenden Befehle zusammengesucht und auf der shell hat auch alles prima funktioniert nur eben als skript und cronjob nicht.


    Bei mir lag der Fehler im Umgang mit dem nano Editor:

    das ssh Fenster war nicht besonders breit, im nano Editor gab es einen automatischen Zeilenumbruch der auch als solcher abgespeichert wurde (was mir nicht bewußt war) und zu Fehlermeldungen führte.


    Der Beitrag ist zwar etwas OFF topic aber ich war bei der Lösung des Problems hier gelandet.