Linux: Dateien älter als X in einem Verzeichnis löschen Frage Linux: Dateien älter als X in einem Verzeichnis löschen zu Favoriten hinzufügen

Daumen hoch 0 Daumen runter

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!

bearbeitet am 22.12.2011

Antworten


Diese Antwort als GUT bewerten 3 Diese Antwort als SCHLECHT bewerten

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.

Danke, genau das war die Lösung! Erstmal die "Spar-Variante" ohne -exec rm {} \; getestet und dann die finale mit dem Ergebnis: 361.184 Files gelöscht :)

martin am 12.12.2011

Hat mir heute auch geholfen, danke roman!

D. Klos am 23.04.2012

Immer wieder gut! :-)

tbone am 30.05.2012
Diese Antwort als GUT bewerten 0 Diese Antwort als SCHLECHT bewerten

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

Diese Antwort als GUT bewerten 0 Diese Antwort als SCHLECHT bewerten

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!

 

Deine Antwort

Registrierter User Bereits registriert? Bitte logge dich vor dem Antworten ein.

Deine Daten