Cron-Job zum Löschen von Dateien, die älter als 3 Tage sind

Cron-Job zum Löschen von Dateien, die älter als 3 Tage sind

Ich muss mit einem Cron-Job in drei verschiedenen Verzeichnissen Dateien entfernen, die älter als drei Tage sind. (Diese drei Verzeichnisse sind untergeordnete Verzeichnisse eines übergeordneten Verzeichnisses /a/b/c/1& /a/b/c/2& /a/b/c/3) Kann dies mit einer Zeile in der Crontab erledigt werden?

Antwort1

Dies ist recht einfach (beachten Sie jedoch, dass sich dies auf einen Änderungszeitpunkt von vor mehr als drei Tagen bezieht, da ein Erstellungszeitpunkt nur auf bestimmten Dateisystemen mit speziellen Tools verfügbar ist):

find /a/b/c/1 /a/b/c/2 -type f -mtime +3 #-delete

Entfernen Sie das #davor, sobald -deleteSie sicher sind, dass die zu entfernenden Dateien gefunden werden.

Um es per Cron auszuführen, würde ich wahrscheinlich einfach ein ausführbares Skript erstellen (ein Shebang - #!bin/shzur obersten Zeile der Datei hinzufügen und mit ausführbar machen chmod a+x) und es dann in ein geeignetes cronVerzeichnis wie /etc/cron.dailyoder legen /etc/cron.weekly. Vorausgesetzt natürlich, dass Sie keinen spezifischeren Zeitplan benötigen und dass diese Verzeichnisse in Ihrer Distribution vorhanden sind.

Aktualisieren

Wie unten angemerkt, ist die -deleteOption für findnicht sehr portierbar. Ein POSIX-kompatibler Ansatz wäre:

find /a/b/c/1 /a/b/c/2 -type f -mtime +3 #-exec rm {} +

Entfernen Sie sie erneut, #wenn Sie sicher sind, dass Sie die richtigen Dateien haben.

Update 2:

Zitat ausKommentar von Stéphane Chazelaunten:

Beachten Sie, dass -exec rm {} +Race-Condition-Schwachstellen vorhanden sind, die -delete(sofern verfügbar) nicht vorhanden sind. Verwenden Sie es daher nicht in Verzeichnissen, die von anderen beschreibbar sind. Einige Funde haben auch ein , -execdirdas diese Schwachstellen abmildert.

Antwort2

Sie wären viel besser dran mittmpwatch

tmpwatch recursively removes files which haven't been accessed for a given time. Normally, it's used to clean up directories which are used for temporary holding space such as /tmp.

verwandte Informationen