Zum Hauptinhalt springen

Skript zum Löschen von Dateien, die älter als n Tage sind, auf einem Linux-Betriebssystem

Auf einem Linux-Betriebssystem ist es sehr praktisch, Skripte zu verwenden, um verschiedene Aufgaben zu automatisieren. Eine solche Aufgabe kann darin bestehen, Dateien zu löschen, die älter als eine bestimmte Anzahl von Tagen sind. Dies kann beispielsweise zum Bereinigen von Verzeichnissen mit Logs oder temporären Dateien nützlich sein.

Um dieses Problem zu lösen, können Sie ein einfaches Bash-Skript schreiben, das nach Dateien nach Datum sucht und die gefundenen Dateien löscht. In diesem Skript verwenden wir das Dienstprogramm find, mit dem Sie nach Dateien nach verschiedenen Kriterien suchen können, einschließlich des Erstellungsdatums oder der letzten Änderung.

Bevor Sie mit dem Schreiben des Skripts beginnen, müssen Sie sicherstellen, dass Sie über Schreibrechte und Löschrechte für Dateien in dem Verzeichnis verfügen, in dem Sie die alten Dateien löschen möchten. Außerdem sollten Sie den Pfad zu diesem Verzeichnis und die Anzahl der Tage kennen, nach denen die Dateien als alt angesehen werden.

Es folgt ein Beispiel für ein einfaches Bash-Skript, das alle Dateien im angegebenen Verzeichnis löscht, die vor mehr als n Tagen erstellt oder zuletzt geändert wurden. Anstelle von n sollten Sie die gewünschte Anzahl von Tagen angeben.

Konfigurieren der Umgebung

Bevor Sie ein Skript schreiben, um Dateien zu löschen, die älter als n Tage in Linux sind, müssen wir die Umgebung einrichten und die notwendigen Werkzeuge installieren.

1. Linux installieren

Wenn Sie noch kein Linux-Betriebssystem installiert haben, müssen Sie es installieren. Sie können sich für eine der gängigen Distributionen wie Ubuntu, Fedora oder CentOS entscheiden. Die Installation von Linux hängt von der gewählten Distribution ab. Befolgen Sie daher die Anweisungen auf der offiziellen Website der gewählten Distribution.

2. Öffnen der Eingabeaufforderung

Nach der Installation von Linux müssen Sie eine Eingabeaufforderung öffnen, um Befehle einzugeben. Unter Linux wird dies normalerweise über ein Terminal oder eine Konsole durchgeführt. Sie finden die Terminal- oder Konsolenanwendung im Anwendungsmenü Ihres Betriebssystems.

3. Aktualisieren von Paketen

Es wird empfohlen, die Pakete Ihres Betriebssystems zu aktualisieren, bevor Sie die erforderlichen Tools installieren. Führen Sie den folgenden Befehl im Terminal aus, um die Pakete zu aktualisieren:

sudo apt update && sudo apt upgrade

Dieser Befehl aktualisiert die Liste der verfügbaren Pakete und installiert alle verfügbaren Updates.

4. Installation der erforderlichen Werkzeuge

Zum Löschen von Dateien, die älter als n Tage sind, benötigen wir Befehlszeilentools wie find und rm. Installieren Sie diese Tools, indem Sie den folgenden Befehl ausführen:

sudo apt install findutils

Bei der Installation von findutils werden Sie möglicherweise aufgefordert, die Installation des Pakets zu bestätigen. Geben Sie "Y" ein und drücken Sie die Eingabetaste, um mit der Installation fortzufahren.

Nachdem Sie diese Schritte abgeschlossen haben, können Sie ein Skript schreiben, um Dateien zu löschen, die älter als n Tage in Linux sind.

Erforderliche Pakete installieren

Bevor Sie mit dem Skript beginnen, um Dateien zu löschen, die älter als n Tage sind, müssen Sie mehrere Pakete installieren:

  • findutils: ein Paket, das das Dienstprogramm find enthält, das vom Skript zum Suchen und Abrufen von Dateien verwendet wird, die älter als die angegebene Anzahl von Tagen sind.
  • coreutils: ein Paket, das die Funktionen enthält, die für find erforderlich sind, einschließlich des rm-Dienstprogramms, das zum Löschen der gefundenen Dateien verwendet wird.

Sie können diese Pakete mithilfe des Paketmanagers Ihres Systems installieren. Für Debian- und Ubuntu-basierte Systeme können Sie beispielsweise den folgenden Befehl verwenden:

sudo apt-get install findutils coreutils

Wenn Sie eine andere Linux-Distribution verwenden, müssen Sie den entsprechenden Befehl für Ihren Paketmanager verwenden.

Nachdem Sie diese Pakete installiert haben, können Sie ein Skript zum Löschen von Dateien verwenden, die älter als n Tage auf einem Linux-System sind.

Erstellen eines Skripts

Um ein Skript zum Löschen von Dateien zu erstellen, die älter als n Tage sind, müssen Sie auf einem Linux-Betriebssystem die folgenden Schritte ausführen:

1. Öffnen Sie einen Texteditor wie Nano oder vi.

2. Erstellen Sie eine neue Datei mit der Erweiterung .sh, zum Beispiel cleanup.sh .

3. Fügen Sie den folgenden Codeblock in die Datei ein:

#!/bin/bashdir="/path/to/directory" # заменить на путь к целевой директорииdays="n" # заменить на количество днейfind "$dir" -type f -mtime +$days -exec rm <> \;

4. Speichern Sie die Datei und schließen Sie den Editor.

5. Dateiberechtigung hinzufügen:

$ chmod +x cleanup.sh

Das Skript zum Löschen von Dateien, die älter als n Tage sind, ist jetzt einsatzbereit. Führen Sie den folgenden Befehl aus, um es auszuführen:

$ ./cleanup.sh

Wenn das Skript ausgeführt wird, werden alle Dateien, die älter als die angegebene Anzahl von Tagen sind, aus dem Zielverzeichnis gelöscht.

Bestimmen des zu analysierenden Verzeichnisses

Bevor Sie ein Skript zum Löschen von Dateien schreiben, die älter als eine bestimmte Anzahl von Tagen sind, müssen Sie ein Verzeichnis definieren, in dem die Dateien analysiert werden sollen.

Dazu können Sie den Befehl verwenden cd (change directory) im Linux-Terminal. Mit diesem Befehl können Sie in das gewünschte Verzeichnis wechseln.

Um beispielsweise in das Verzeichnis "var/log" zu wechseln, müssen Sie den folgenden Befehl ausführen:

Nachdem wir diesen Befehl ausgeführt haben, arbeiten wir im angegebenen Verzeichnis und können die darin enthaltenen Dateien analysieren.

Stellen Sie daher sicher, dass Sie sich im richtigen Verzeichnis für die Analyse befinden, bevor Sie ein Skript zum Löschen von Dateien schreiben. Andernfalls müssen Sie den Befehl verwenden cd um das Dateisystem in das gewünschte Verzeichnis zu verschieben.

Überprüfen des Dateialters

Wenn Sie Dateien löschen, die älter sind als ein bestimmtes Alter auf einem Linux-Betriebssystem, müssen Sie zuerst das Alter der einzelnen Dateien bestimmen. Dies kann mit dem Dienstprogramm erfolgen find und Flaggen -mtime oder -mmin.

Flagge -mtime sucht nach Dateien, die vor mehr als n*24 Stunden geändert wurden (wobei n die Anzahl der Tage ist). Zum Beispiel wird der Befehl verwendet, um nach Dateien zu suchen, die älter als 7 Tage sind:

  • find /path/to/directory -type f -mtime +7

Dieser Befehl findet alle Dateien im angegebenen Verzeichnis, die vor mehr als 7 Tagen geändert wurden. Um nach Dateien zu suchen, die jünger als ein bestimmtes Alter sind, verwenden Sie das Minuszeichen (-) anstelle des Pluszeichens (+).

Flagge -mmin sucht nach Dateien, die vor mehr als n Minuten geändert wurden. Zum Beispiel wird der Befehl verwendet, um nach Dateien zu suchen, die älter als 60 Minuten sind:

  • find /path/to/directory -type f -mmin +60

Wenn Sie das Dienstprogramm verwenden find auf diese Weise können Sie eine vollständige Liste der Dateien abrufen, die für bestimmte Änderungs- oder Erstellungsdatumskriterien geeignet sind. Diese Liste kann an ein anderes Skript zum Löschen übergeben oder innerhalb des aktuellen Skripts zum Löschen von Dateien verarbeitet werden, die älter als n Tage sind.

Alte Dateien löschen

Wenn sich viele alte Dateien auf Ihrem Computer ansammeln, kann dies zu einer ineffizienten Nutzung des Speicherplatzes führen. Das Linux-Betriebssystem hat die Möglichkeit, Dateien zu löschen, die innerhalb einer bestimmten Anzahl von Tagen nicht geändert wurden. Dies kann nützlich sein, um Speicherplatz freizugeben und das System in Ordnung zu halten.

Sie können den Befehl verwenden, um alte Dateien unter Linux zu löschen find mit Option -mtime. Mit dieser Option können Sie die Anzahl der Tage angeben, an denen die Datei geändert werden muss, damit sie gelöscht werden kann. Der folgende Befehl löscht beispielsweise alle Dateien im aktuellen Verzeichnis, die in den letzten 30 Tagen nicht geändert wurden:

$ find . -type f -mtime +30 -delete

In diesem Beispiel wird der Parameter verwendet -type f, um anzugeben, dass nur nach normalen Dateien gesucht werden soll, nicht nach Verzeichnissen oder anderen Dateitypen. Option -delete weist den Befehl find an, die gefundenen Dateien zu löschen.

Es ist wichtig, vorsichtig zu sein, wenn Sie den Befehl find mit der Option -delete verwenden, da gelöschte Dateien nicht wiederhergestellt werden können. Es wird empfohlen, den Befehl zuerst ohne die Option -delete zu testen und sicherzustellen, dass er nur die benötigten Dateien findet. Sie können dann die Option -delete hinzufügen, um die Dateien tatsächlich zu löschen.

Sie können den Befehl find auch mit anderen Dienstprogrammen kombinieren, z. B. xargs oder rm, um komplexere Operationen zum Löschen von Dateien durchzuführen. Der folgende Befehl löscht beispielsweise alle Dateien im Verzeichnis /var/logs, die vor mehr als 7 Tagen geändert wurden:

$ find /var/logs -type f -mtime +7 | xargs rm

In diesem Beispiel findet der Befehl find alle Dateien im Verzeichnis /var/logs, die vor mehr als 7 Tagen geändert wurden. Die Ergebnisse werden dann an den xargs-Befehl übergeben, der den Befehl rm aufruft, um die gefundenen Dateien zu löschen.

Das Löschen alter Dateien kann ein nützlicher Mechanismus sein, um die Reihenfolge im Linux-Dateisystem zu unterstützen und Speicherplatz zu sparen. Sie sollten jedoch vorsichtig sein, wenn Sie den Befehl find mit der Option -delete verwenden und die Ergebnisse vorab überprüfen, um wichtige Dateien nicht zu löschen.

Prozessautomatisierung

Das manuelle Löschen von Dateien, die älter als ein bestimmtes Alter sind, kann zeitaufwendig und zeitaufwendig sein. Um diese Aufgabe zu vereinfachen und Zeit zu sparen, können Sie das Skript zum Löschen von Dateien verwenden, die älter als n Tage auf einem Linux-Betriebssystem sind.

Die Automatisierung des Löschvorgangs für Dateien, die älter als n Tage sind, ermöglicht:

  • Sparen Sie Zeit und vereinfachen Sie das Löschen veralteter Dateien;
  • Vermeiden Sie mögliche Fehler beim Löschen wichtiger Dateien oder Ordner;
  • Legen Sie eine flexible Richtlinie zum Löschen von Dateien basierend auf spezifischen Anforderungen und Regeln fest;
  • Führen Sie die Löschaufgabe automatisch in einer bestimmten Häufigkeit aus, z. B. jede Woche oder jeden Monat.

Das Skript zum Löschen von Dateien, die älter als n Tage sind, basiert auf dem Befehl find, mit dem Sie nach Dateien nach verschiedenen Kriterien suchen können, einschließlich des Erstellungsdatums oder der letzten Änderung. Sie können dieses Skript manuell ausführen oder zum Systemzeitplan hinzufügen, um es automatisch auszuführen.

#!/bin/bash

# Variablen festlegen

path_to_directory="/Pfad/zu/Verzeichnis"

days_to_keep=7

# Finden und Löschen von Dateien

find $path_to_directory -type f -mtime +$days_to_keep -exec rm <> \\;

In diesem Beispiel löscht das Skript alle Dateien im angegebenen Verzeichnis, die älter als 7 Tage sind. Sie können den Wert der Variablen path_to_directory und days_to_keep entsprechend Ihren Anforderungen ändern.

Stellen Sie sicher, dass Sie das Skript vor der Verwendung in einer Produktionsumgebung testen, um sicherzustellen, dass es ordnungsgemäß funktioniert. Beachten Sie, dass gelöschte Dateien nicht in den Papierkorb verschoben werden und nicht wiederhergestellt werden können. Seien Sie also vorsichtig, wenn Sie das Skript einrichten.

Wenn Sie ein Skript zum Löschen von Dateien verwenden, die älter als n Tage sind, können Sie die Archivierung und Bereinigung von Dateien auf Ihrem Server effizient verwalten, um die Systemleistung zu optimieren und zu verbessern.