GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Wie erstelle ich einen Cron-Job, der automatisch Dateien löscht, die älter als 30 Tage sind?

Ich verwende Ubuntu 14 Desktop. Ich verwende diese Maschine, um andere Maschinen zu sichern und als FTP-Server für die Sicherheitskameras.

Ich muss einen Cron-Job erstellen, der automatisch Dateien löscht, die älter als 30 Tage sind. Ich habe etwas gesucht und glaube, den richtigen Befehl gefunden zu haben, aber ich möchte sichergehen, dass ich nichts übersehe, bevor ich ihn ausführe.

* 4 * * * find /home/USER/DIRECTORY1/DIRECTORY2/ -mindepth 1 -type f -mtime 29 -delete

Muss ich „sudo“ vor den Find-Befehl setzen?

Muss ich „+“ vor die Anzahl der Tage „29“ setzen?

Akzeptierte Antwort:

Geben Sie zuerst Ihren find ... ein Befehl in einer bash Skript und rufen Sie dieses Skript aus Ihrem crontab auf . Wenn Sie ein verschlüsseltes Home-Verzeichnis haben (cat /home/.ecryptfs/$USER/.ecryptfs/Private.mnt ) müssen Sie Ihr Skript außerhalb Ihres $HOME speichern Verzeichnisbaum. Halten eines Befehls in crontab erschwert das Konfigurieren, Protokollieren und Debuggen, und die crontab Befehlsparser ist nicht so schlau wie bash s.

Zweitens, immer, Immer, IMMER find testen mit -print , und bringen Sie es zum Laufen, bevor Sie -delete in Betracht ziehen .

Drittens das find teste „-mtime 29 “ sagt find „Suchen Sie die mtime der Datei , und geben Sie True zurück wenn es gleich 29 ist . Sie sollten -mtime +29 verwenden , die find sieht als „more than 29 “, das ist, was Sie wollen. Von man find :

   Numeric arguments can be specified as

   +n     for greater than n,

   -n     for less than n,

   n      for exactly n.

Stellen Sie viertens sicher, dass Sie Schreibzugriff auf die Verzeichnisse in /home/USER/DIRECTORY1/DIRECTORY2/ haben .

Fünftens, meinst du /home/USER/DIRECTORY1/DIRECTORY2/ oder /home/$USER/DIRECTORY1/DIRECTORY2/ ? Wenn $USER für die Benutzer-ID des Benutzers ist, haben Sie ein Problem:cron definiert $USER nicht in der Laufzeitumgebung. Es definiert $HOME , also könnten Sie $HOME/DIRECTORY1/DIRECTORY2 verwenden .


Ubuntu
  1. Wie richte ich einen Cron ein, um täglich eine MySQL-Datenbanksicherung durchzuführen und die älteren Sicherungsdateien zu entfernen, die älter als 10 Tage sind?

  2. So entfernen Sie Dateien, die älter als N Tage sind, mit tmpreaper in Linux

  3. So erstellen Sie Tar für Dateien, die älter als 7 Tage sind, mithilfe von Linux-Shell-Skripten

  4. Wie löschen Sie Dateien, die älter als ein bestimmtes Datum in Linux sind?

  5. Wie finde ich alle Dateien, die *nicht* für Gruppen beschreibbar sind?

So verwenden Sie den SED-Befehl zum Suchen und Ersetzen von Zeichenfolgen in Dateien

So finden Sie Dateien in der Ubuntu-Befehlszeile

So finden und löschen Sie doppelte Dateien in Ubuntu mit Fdupes

So löschen Sie Dateien, die älter als die angegebenen Tage in Linux sind

Cron-Job erstellen und löschen

Cron-Job zum Löschen aller Dateien älter als 7 Tage mit Erweiterung in einem bestimmten Ordner - funktioniert nicht