Merke – Cronjob – Löschen von alten(!) Dateien und Verzeichnissen

Auf 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/bash
find /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!

6 Comments

on “Merke – Cronjob – Löschen von alten(!) Dateien und Verzeichnissen
6 Comments on “Merke – Cronjob – Löschen von alten(!) Dateien und Verzeichnissen
  1. Hm so machen wir das auch, nur ein bisschen anders 🙂 Wir haben nämlich auch so ein Temp Verzeichnis auf dem NAS, dass manche aber gern als Dauerspeicherplatz verwenden.

    Und jetzt wird alles was älter als 7 Tage ist gelöscht 😀

  2. Mit Parameter „-mtime“ werden allerdings auch Dateien gelöscht die erst vor einem Tag dort hin kopiert wurden, aber vor mehr als 30 Tagen (irgendwo anders) erstellt wurden.

    Meiner Ansicht nach ein Fehlverhalten. Hier müsste dann eher „-ctime“ verwendet werden, oder?!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.