Merke – Cronjob – Löschen von alten(!) Dateien und Verzeichnissen
Erstellt von tAXMAN am 25. Februar 2010Auf der im lokalen Netz befindlichen Datensammelmaschine (NAS) befindet sich ein Ordner, in dem die Kollegen Daten austauschen und kurzfristig bereitstellen können. Da einige den Begriff kurzfristig nach eigenem Ermessen auslegen musste eine Lösung her, die kurzfristig für Ordnung sorgt. Das FreeNAS bietet für Dummies wie mich sogar die Möglichkeit per Webinterface Cronjobs zu definieren. Schnell wurde eine Scriptdatei erstellt und die ersten Versuche gestartet.
Das erste Script sah wie folgt aus und tat auch schon fast (!!) alles, was es sollte:
#!/bin/bash
path="/mnt/archiv2/Austausch/"
for dir in $(find $path -maxdepth 20 -type d -mtime +30);
do
rm -Rf $dir;
done
Leider scheiterte die Variante an Verzeichnisnamen, die Leerzeichen enthielten, sodass leere Verzeichnisleichen übrig blieben. Den entscheidenden Tipp gab Lordmat der mich auf die Möglichkeiten von xargs hinwies.
#!/bin/bashfind /mnt/archiv2/Austausch -type d -mtime +30 -print0 | xargs -0 rm -Rf
find /mnt/archiv2/Austausch -type f -mtime +30 -print0 | xargs -0 rm -Rf
Die 2 Zeilen ließen sich nicht von hinter Leerzeichen versteckten Versionsnummern verwirren, löschten stattdessen alle Dateien (älter als 30 Tage) sowie die entsprechenden leeren (!!!) Unterverzeichnisse.
2 kleene Zeilen! ich bin begeistert.
Danke auch an trinec!
| Erstellt in » 




