Linux – Script – Dateien löschen, älter als 14 Tage

Anwendungsfall
Auf einem Linux-Server im Netzwerk haben mehrere Benutzer auf einen Ordner Zugriff, in dem Daten temporär abgelegt werden können. Selbstverständlich kümmert sich niemand darum, die Daten wieder zu entfernen und somit wächst der Ordner stetig weiter an. Das folgende Script überprüft den Ordner, protokolliert die sich darin befindlichen Daten, löscht automatisiert Dateien, welche älter sind als 14 Tage und protokolliert ebenfalls, welche Dateien gelöscht wurden.

ACHTUNG
Die Nutzung dieses Scripts geschieht auf eigene Gefahr!
Use this script at your own risk!

#/bin/bash

# clearTemp.sh
# 07.02.2014 11:59
# Alexander Killert

# SETTINGS
# exectue script on folder, ABSOLUTE PATH !!!
executionFolder="/path/to/execution/folder"
# list of files in folder
folderList="$executionFolder/folderList.log"
# list of deleted files
deletedList="$executionFolder/deletedList.log"

# list all files in folder include subfolders -> for log
find $executionFolder -type f > $folderList

# delete files older than ... days THAN delete empty folders
find $executionFolder/* -mtime +14 -exec rm {} \; && find $executionFolder/* -type d -empty -exec rmdir {} \;

# protocol which files where deleted
# line by line from $folderList
while IFS= read -r LINE
do
   # file does not exist -> "! -f ..."
   if [ ! -f "$LINE" ]
   then
      # log file, that was deleted
      echo $LINE >> $deletedList
   fi
done < $folderList

# EOF

Anpassungen
In die Zeile 8 muss der absolute Pfad zum Ordner angegeben werden, auf den das Script angewendet werden soll.
 

Automatisierung
Um das ganze zu automatisieren kann ein Cronjob eingerichtet werden, um das Script täglich zu einer bestimmten Uhrzeit auszuführen.

crontab -e

Einzutragende Zeile:

0 0 * * * /path/to/script/clearTemp.sh

Hier: Täglich, um 0:00 Uhr.
 

Script manuell ausführen

bash /path/to/script/clearTemp.sh

 

Getestet mit:
Ubuntu 12.04 LTS (64-Bit)
 

Schreibe einen Kommentar