Linux: Dateien älter als X in einem Verzeichnis löschen

09.12.2011 10:58 Uhr

Ich habe ein auf Files basiertes Caching. Im Cache-Verzeichnis haben sich inzwischen >500.000 Files angesammelt.

Viele dieser Files sind älter als 3 Monate und können damit gelöscht werden.

Wie kann ich genau das auf einem CentOS-System realisieren?

Danke vorab!

3 Antworten

#1

09.12.2011 16:12 Uhr

Zur Ergänzung: Ich würde das gerne in der Shell und nicht z.B. mittels PHP lösen.

#2

10.12.2011 15:41 Uhr

Ich denke der folgende Befehl sollte das Problem lösen:

find . -ctime +90 -print -exec rm {} \; > log.txt

Wobei . für das aktuelle Verzeichnis und ctime für den Zeitpunkt der letzten Änderung des Dateistatus steht (es gibt noch mtime für den Zeitpunkt der letzten Änderung des Dateiinhalts und atime für den Zeitpunkt des letzten Zugriffs ). Das + steht für 'älter als' und die Angabe danach sind Tage (minutengenau geht es mit cmin und analog dazu amin und mmin). Umgekehrt geht es natürlich auch (neuer als 3 Tage = -ctime -3 usw. ).

Die print-Option gibt noch den Dateinamen der betroffenen Datei aus (für das Loggin in die Datei log.txt per Pipe >). Das exec führt einen Befehl aus, in dem Fall rm, wobei {} durch den aktuellen Dateinamen ersetzt wird. Abgeschlossen wird der exec-Teil mit einem Semikolon mit einem \ davor.

#3

03.02.2014 07:29 Uhr

Erst mal danke dafür - das ganze hat mir schon sehr geholfen!

Ich hätte noch eine Ergänzungsfrage. Gibt es eine Möglichkeit hier bestimmte Ordner auszunehmen?

Also Verzeichnis A mit Ordner B, C und D drin, die Dateien in Ordner C sollen gelöscht werden, B und C aber nicht. Der Ordnername von B und C ist statisch, es können aber weitere Ordner E, F, ... hinzu kommen die auch immer standardmäßig gelöscht werden. Jemand eine Idee?

Vielen Dank im Voraus!

 

Ähnliche Fragen



Datenschutzerklärung · Impressum