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 Pi nicht komplett voll läuft und eine 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.
In der Anleitung ➡ Raspberry Pi Kamera-Modul mit Motion als kleine Überwachungskamera werden einige neue Verzeichnisse angelegt. Die aufgenommenen Bilder/Videos werden von Motion in den Pfad /home/pi/motion/video gespeichert.
Die Bild- und Video-Dateien in diesem Motion-Verzeichnis sind schreibgeschützt, weshalb der Cron-Job als sudo auszuführen ist.
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.

Das Skript könnt ihr auch sofort testen, indem ihr es über die Konsole starten könnt
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 Skript lautet bei mir:
@daily /bin/bash/ /home/pi/script/autodelete.sh

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 *

ist absolut technik-begeistert und großer Fan von Linux und Open Source. Raspberry Pi Bastler der ersten Stunde und nach wie vor begeistert von dem kleinen Stück Hardware, auf dem er tolle Projekte umsetzt. Teilt hier seine Erfahrungen mit Nextcloud, Pi-hole, YubiKey, Synology und openmediavault und anderen spannenden IT-Themen. Nutzt Markdown und LaTeX zum Dokumentieren seiner Projekte und Gitea zum Versionieren. Sitzt vor einem 49“ Monitor, nutzt Windows und MacOS zum Arbeiten, Linux auf seinen Servern und virtuellen Maschinen und hört dabei Spotify und MP3s und Radio-Streams über seinen RadioPi.
Hallo!Ich bekomme immer diesen Fehler:[~]# find /path/to/files/* -mtime +X -exec rm {} \;BusyBox v1.01 (2015.11.17-17:32+0000) multi-call binaryUsage: find [PATH…] [EXPRESSION]Search for files in a directory hierarchy. The default PATH isthe current directory; default EXPRESSION is ‚-print’Hat jemand eine Ahnung woran das liegen könnte???
Hallo Steffen,
wie sieht denn dein Skript auf?
Wie rufst du deine Datei auf, damit diese Fehlermeldung kommt?
Hallo Stefan,
danke für die Anleitung!
Das mit dem Script habe ich hinbekommen… läuft auch soweit, sofern ich es als sudo ausführe. Sonst kommt eine Fehlermeldung wegen fehlender Berechtigung.
Den crontab habe ich mit sudo crontab -e erstellt.
MAILTO=““
05 20 * * * /bin/bash/ /home/pi/script/autodelete.sh
Dieser scheint laut Protokoll auch immer ausgeführt zu werden (sudo /etc/init.d/cron status)
Allerdings wird das Script wohl nicht ausgeführt, im Gegensatz zur manuellen Ausführung…
Eine Idee, was ich falsch mache?
Danke schon mal.
Grüße
Michael
Hallo Michael,
Leider kann ich dir auf Anhieb auch keine Lösung sagen, sorry.
Vielleicht prüfst du Mal den Eigentümer und die Rechte des Skripts. Evtl. hängt das damit zusammen.
Ich hoffe du findest bald eine Lösung.
Stefan
Warum nicht gleich in der crontab:
@daily find /home/pi/Monitor/* -mtime +3 -exec rm {} \;