Zum Hauptinhalt springen Skip to page footer

Effiziente Verwaltung: Automatische Löschung veralteter Dateien mit einem Linux-Shell-Skript und Cron-Job

| Tutorial | Bash Linux

"Beschleunige deine Dateiverwaltung auf Linux! Erfahre, wie du mit einem benutzerdefinierten Shell-Skript und einem praktischen Cron-Job automatisch veraltete Dateien löschen kannst. Spar Zeit und Speicherplatz, indem du deine Aufgaben effizient automatisierst."

Linux-Shell-Skript

Ein Linux-Shell-Skript ist eine Datei, die eine Abfolge von Befehlen enthält, die in einer Shell-Umgebung auf einem Linux-System ausgeführt werden. Es ermöglicht die Automatisierung von Aufgaben, das Durchsuchen von Dateien, die Manipulation von Daten und die Interaktion mit dem Betriebssystem. Shell-Skripte sind eine flexible und leistungsstarke Methode, um wiederkehrende Aufgaben zu automatisieren und komplexe Abläufe zu vereinfachen.

Schritt 1: Öffnen eines Texteditors

Öffnen Sie einen beliebigen Texteditor wie nano oder vi, um das Skript zu erstellen. Hier ist ein Beispiel mit nano: 

nano delete_old_files.sh

Schritt 2: Erstellen des Skripts

Geben Sie den folgenden Code in den Texteditor ein:

#!/bin/bash

# Pfad zum Ordner, in dem die Dateien gespeichert sind
ordner="/path/to/folder"

# Endung der zu löschenden Dateien
endung=".tar.gz"

# Anzahl der Tage, ab denen die Dateien gelöscht werden sollen
alter=7

# Aktuelles Datum in Sekunden seit dem 1. Januar 1970
aktuelles_datum=$(date +%s)

# Schleife durch alle Dateien im Ordner
for datei in "$ordner"/*"$endung"; do
    # Letzte Änderung der Datei in Sekunden seit dem 1. Januar 1970
    letzte_aenderung=$(stat -c %Y "$datei")
    
    # Alter der Datei in Tagen
    alter_in_tagen=$(( (aktuelles_datum - letzte_aenderung) / (60 * 60 * 24) ))
    
    # Überprüfen, ob die Datei älter als das angegebene Alter ist
    if [ $alter_in_tagen -gt $alter ]; then
        # Lösche die Datei
        rm "$datei"
        echo "Die Datei $datei wurde gelöscht."
    fi
done

echo "Der Vorgang wurde abgeschlossen."

Schritt 3: Speichern und Schließen des Skripts

Speichern Sie das Skript und schließen Sie den Editor.

Schritt 4: Skript ausführbar machen

Um das Skript ausführbar zu machen, geben Sie den folgenden Befehl in der Linux-Shell ein:

chmod +x delete_old_files.sh

Schritt 5: Ausführen des Skripts (manuell)

Führen Sie das Skript aus, indem Sie den folgenden Befehl in der Linux-Shell eingeben:

./delete_old_files.sh

Das Skript durchsucht das angegebene Verzeichnis nach Dateien mit der Erweiterung .tar.gz und löscht alle Dateien, die älter als 7 Tage sind. Es gibt außerdem eine Benachrichtigung, wenn eine Datei gelöscht wurde, und zeigt eine Abschlussmeldung an, wenn der Vorgang abgeschlossen ist.

Bitte beachten Sie, dass Sie den Verzeichnispfad in der Variablen „ordner“ anpassen müssen, um den tatsächlichen Pfad zu Ihrem Verzeichnis anzugeben. 

Damit das Skript nicht immer manuell ausgeführt werden muss, werden wir in den nächsten Schritten einen Cron-Job anlegen, der das Skript einmal am Tag ausführt.

Schritt 6: Öffnen des Cron-Job-Editors

Öffnen Sie den Cron-Job-Editor, indem Sie den folgenden Befehl in der Linux-Shell eingeben:

crontab -e

Schritt 7: Hinzufügen des Cron-Job-Eintrags

Fügen Sie am Ende der Datei den folgenden Eintrag hinzu, um den Cron-Job zu konfigurieren:

0 0 * * * /pfad/zum/skript/delete_old_files.sh >/dev/null 2>&1

Dieser Eintrag gibt an, dass der Cron-Job einmal täglich um 00:00 Uhr ausgeführt wird. Der Pfad zum Skript delete_old_files.sh sollte durch den tatsächlichen Pfad zu Ihrem Skript ersetzt werden.

Die Ausgabe des Cron-Jobs wird zur Standardausgabe (>/dev/null) umgeleitet, um den Versand von E-Mails mit Skriptausgabe zu vermeiden. Die 2>&1-Umleitung leitet außerdem die Fehlerausgabe an die Standardausgabe weiter, um sicherzustellen, dass keine Fehlermeldungen per E-Mail gesendet werden. 

Schritt 8: Speichern und Schließen des Cron-Job-Editors

Speichern Sie den Cron-Job-Eintrag und schließen Sie den Editor.

Der Cron-Job ist nun konfiguriert und führt das Skript einmal täglich aus. Das Skript löscht alle Dateien mit der Erweiterung .tar.gz, die älter als 7 Tage sind, und gibt eine entsprechende Meldung aus. Der Cronjob läuft automatisch im Hintergrund und Sie erhalten keine E-Mails mit Skriptausgabe.