Archiv » SSH / Bash / SHELL » Linux Bash - Dateien älter...

Linux Bash - Dateien älter als X Tage finden und löschen

Auf meinem Managed- oder Rootserver mit einem Linux-Betriebssystem lassen sich per Konsole / Terminal zahlreiche Aktionen ausführen. Unter anderem laufen bei Backups die Festplatten bzw. RAID-Systeme schnell über und Abhilfe schafft ein automatisierter Prozess, der Backups (Dateien) älter 14, 30 oder 90 Tage aus einem Verzeichnis löscht. Genutzt wird der "find"-Befehl, um Dateien ausfindig zu machen, welche älter als ein bestimmtes Datum sind. Als "Befehl" geben wir noch "-exec" mit, um das Löschen der Dateien durchzuführen. Das unten gezeigte Beispiel löscht alle "*.tar.gz"-Dateien, die älter als 30 Tage sind. Die Eigenschaft (Option) "-ctime" wird in Tagen angegeben. Die Werte können variieren (14, 30, 90, ... Tage). Mit "-maxdepth" geben wir an, dass nur das aktuelle Verzeichnis durchsucht werden soll. (Zwei Verzeichnis vom Root aus) Bei rekursiver Tiefe, kann es schnell zum Löschen von Linux-Systemdaten führen.
#Löscht per "rm" alle "*.tar.gz" Dateien
#im Ordner "/backup/www-files/", die älter als 14 Tage sind:
find -P "/backup/www-files/"  -maxdepth 1 -type f \( -name '*.tar.gz' \) -ctime +14 -exec rm {} \;