Zum Inhalt

Dateien automatisch mit Cron-Jobs löschen, die älter als X-Tage sind

Meine kleine RPi-Überwachungskamera funktioniert auch im Dauerbetrieb sehr gut. Der einzige kleine Nachteil, es fällt eine große Menge an Daten durch das automatische Aufzeichnen an. Damit der Speicher des Pis nicht komplett voll läuft und ein manuelles Löschen alter Dateien unnötig wird, gibt es Abhilfe.

Mit einem einfachen Cron-Job werden die Dateien in definierten Verzeichnissen automatisch gelöscht, die älter X Tage sind.

Schritt 1: Bash-Skript erstellen

Bevor wir aber den Cron-Job anlegen können, ist der Befehl für das Löschen der Dateien als Bash-Script zu erstellen. Ich habe zu diesem Zweck ein neues Verzeichnis angelegt, in das alle Skripte gelegt werden können.

mkdir /home/pi/script

Anschließend ist dort eine Datei einem Editor zu erstellen, die den folgenden Inhalt hat. Ich verwende hierfür nano. Zum Aufrufen des Editors und zum Erstellen der Datei gebt einfach den Befehl nano auf der Konsole ein. Kopiert den folgenden Inhalt in die neue Datei, passt den Pfad an und speichert die Datei unter einem beliebigen Namen ab. Bei mir hat das Skript die aussagekräftige Bezeichnung autodelete.sh erhalten.

#!/bin/bash

find /path/to/files/\* -mtime +X -exec rm {} \\;

Die Variable X steht für Tage und kann beliebig angepasst werden.

Inhalt bash-Skript

Das Skript könnt ihr auch sofort testen, indem ihr es über die Konsole startet

cd /home/pi/script
sh ./autodelete.sh

Funktioniert das Skript, können wir im nächsten Schritt den Cron-Job anlegen.

Schritt 2: Cron-Job anlegen

sudo crontab -e

Der Eintrag zum automatischen Starten des Skripts lautet bei mir:

@daily /bin/bash/ /home/pi/script/autodelete.sh

crontab crontab[/caption]

Cron-Job - Infos

Hier vielleicht noch ein paar Infos, die euch beim Erstellen von Cron-Jobs helfen.

Die Zeiteinstellungen für den Cron-Job können nach dem folgenden Muster erfolgen.

\*     \*     \*     \*     \*  YOURCOMMAND
- - - - -
|     |     |     |     |
|     |     |     |     +----- Day in Week (0 to 7) (Sunday is 0 and 7)
|     |     |     +------- Month (1 to 12)
|     |     +--------- Day in Month (1 to 31)
|     +----------- Hour (0 to 23)
+------------- Minute (0 to 59)

Ist euch das Einstellen der Zeit, wie oben beschrieben zu umständlich, gibt es auch ein paar Shortcuts:

@reboot --> only once at startup
@daily ---> once a day
@midnight --> once a day at midnight
@hourly --> once a hour
@weekly --> once a week
@monthly --> once a month
@annually --> once a year
@yearly --> once a year

Diese Shortcuts lassen sich auch wiederum in die normale Zeitangabe übersetzen:

@daily --> 0 0 \* \* \*
@midnight --> 0 0 \* \* \*
@hourly --> 0 \* \* \* \*
@weekly --> 0 0 \* \* 0
@monthly --> 0 0 1 \* \*
@annually --> 0 0 1 1 \*
@yearly --> 0 0 1 1 \*

Gib mir gerne einen Kaffee ☕ aus ❗️

Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.

Donation via PayPalDonation via LiberaPay

Donation via Bitcoin
Bitcoin Address: bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj