Automatische Datei-Bereinigung

  • Hallo Community


    Ich suche nach einer Lösung, automatisch einmal am Tag Dateien aus einem Ordner zu löschen, welche älter als 5 Tage sind. Gibt es eine Option, Erweiterung oder ein Script, welches mir das abnimmt?


    lg bergi

  • Müsste man dann selbst schreiben, etwas vorhandenes wäre mir nicht bekannt...


    Aber man kann ja mittels if-Abfragen einen Fall Datei älter als aktuelles Datum-letztes änderungsdatum=5 dann rm -rf Dateiandernfalls garnichts


    Und das halt in einer entsprechenden Loop verpackt, sodass alle Dateien abgefragt werden ;)

  • Script klingt gut. Leider habe ich damit Null Erfahrung. Da es ums Löschen geht, sollte das Script dann auch wirklich nur das machen, was es soll.
    Vielleicht hat jemand von euch schon mal was in diese Richtung gemacht?


    Für das Selektieren habe ich mal das hier ausprobiert:

    Bash
    find /path/to/files -mtime +5

    Somit werden aber nur die Dateien selektiert, welche ich behalten möchte. Ich bräuchte den Rest.

  • Bash
    #!/bin/sh
    find /path/to/files -type f -mtime +5 -exec rm {} \;

    sollte funktionieren.

  • Sieht schon mal nicht schlecht aus:

    Code
    find /path/to/files -type f -mtime +5

    funktioniert.
    Aber das Löschen mit exec rm{} \; wird nicht ausgeführt. Stattdessen werden die Optionen von find aufgelistet. Und da finde ich nichts brauchbares.

  • Entware-ng und findutils installiert. Und das Löschen funktioniert nun! :)
    Herzlichen Dank


    Jetzt fehlt noch die tägliche, automatische Ausführung durch das NAS. Das muss wohl in crontab. Wie ist mir aber nicht ganz klar:
    - Wie und wo soll der Befehl gespeichert werden? In separate Datei?
    - Wie kann Crontab editiert werden, dass die Änderung nach Reboot und Firmware Updates erhalten bleibt?

  • Wann soll das täglich passieren?
    Wo möchtest du das Script speichern?

  • Das kann nachts zB um 3 Uhr ablaufen.
    Das Skript würde ich gerne in meiner Ordnerfreigabe 'Admin' speichern. Später kommen dann evt weitere Bereinigungsaufgaben dazu.

  • Ok, dann gib folgend Befehle per Putty ein:

    Bash
    echo "#!/bin/sh" > /share/Admin/del_files_older_5days.sh
    echo "find /path/to/files -type f -mtime +5 -exec rm {} \;" >> /share/Admin/del_files_older_5days.sh
    chmod 755 /share/Admin/del_files_older_5days.sh
    echo "0 3 * * * /share/Admin/del_files_older_5days.sh" >> /etc/config/crontab
    crontab /etc/config/crontab

    Kurze Erläuterung:
    1. und 2. erstellt das Script "del_files_older_5days.sh" Zeile 2 natürlich anpassen!
    3. Setzt Ausführungsrechte für die Datei.
    4. Fügt eine Zeile in der crontab ein
    5. Läd die crontab neu.


    Ich hoffe es funktioniert.

    Einmal editiert, zuletzt von frosch2 ()

  • So, bin nun endlich dazu gekommen das zu testen.
    Also der Eintrag in crontab war erfolgreich. Zum Test hab ich noch einen Eintrag für einen Website Aufruf hinzugefügt. Der logt die Ausführungen.
    Log wird geschrieben, aber das Löschen funktioniert nicht. Der selbe Finde/Löschen Befehl auf Putty funktioniert aber. Gibt es hier noch ein Berechtigungsproblem?



    Bleibt der Eintrag in crontab nach einem Firmware Upgrade erhalten?

    Einmal editiert, zuletzt von bergherr ()

  • Versuche bitte mal:

    Bash
    echo "#!/bin/sh" > /share/Admin/del_files_older_5days.sh
    echo "/opt/bin/find /path/to/files -type f -mtime +5 -exec rm {} \;" >> /share/Admin/del_files_older_5days.sh
    chmod 755 /share/Admin/del_files_older_5days.sh
    echo "0 3 * * * /share/Admin/del_files_older_5days.sh" >> /etc/config/crontab
    crontab /etc/config/crontab

    Der Eintrag sollte erhalten bleiben.

  • Freut mich, dass ich helfen konnte.
    Setze bitte noch deinen Thread auf "erledigt"!

  • Hallo,

    wie stelle ich es an, wenn ich das auf der 2.Festplatte anwenden möchte? Und wie logge ich mich da ein?


    Gruß Hicki

  • Moin, wenn Du noch nicht mal weißt, wie Du Dich einloggst, dann solltest Du besser die Finger davon lassen ;).

    Wenn Du etwas falsches löscht, kann das ganze NAS zum Design-Briefbeschwerer werden.


    Und abgesehen davon: Wie frage ich richtig?


    Wenn Du uns noch nicht einmal mitteilst, wie das NAS konfiguriert ist (Raid?), dann können wir auch nichts zur zweiten Platte (Pool, Volume???) sagen.


    Gruß

  • Hallo,

    wie ich mich über die Weboberfläche einlogge weiß ich schon. Ich meine über Putty.

    Ich finde es lästig regelmäßig meine Backups von der 2.Platte zu löschen.

    Ich denke mal, dass geht auch anders. Und mit der richtigen Anleitung erst recht.

    Ich habe mal ein Bild angehängt, um welches Verzeichnet es geht.

    Vielen Dank schon mal im voraus.


    Gruß Hicki

  • Ich meinte auch die Anmeldung über Putty, das ist einfachtes Linux.

    Die Frage wie das geht zeigt mir, das Du Dich mit Linux nicht auskennst, daher meine Warnung.


    Ich sehe im Screenshot nur ein Volume 2.

    Soll man daraus schliessen, das die Platten als Einzellaufwerke konfiguriert sind?

    Letztendlich musst Du in dem o.a. Script nur den Pfad entsprechend ändern, so das er auf das richtige Verzeichnis zeigt.

    Da das editieren unter Linux aber nur mit einem passenden Editor (z.B. vi) geht und nicht mit notepad, sehe ich hier gewisse Schwierigkeiten auf Dich zukommen. Für vi gibt es genügend Anleitungen im Netz.


    Alternativ könntest Du WinSCP installieren und mit WinSCP arbeiten, damit hast Du zumindest die gewohnt grafische Oberfläche.

    Aber auch hier gilt: Du musst wissen, as Du tust.


    Gruss