GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come creare un processo Cron che elimina automaticamente i file più vecchi di 30 giorni?

Sto usando Ubuntu 14 desktop. Uso questa macchina per eseguire il backup di altre macchine e come server FTP per le telecamere di sicurezza.

Ho bisogno di creare un lavoro cron che elimini automaticamente i file che sono più vecchi di 30 giorni. Ho fatto qualche ricerca e penso di aver trovato il comando giusto ma voglio assicurarmi di non perdere qualcosa prima di eseguirlo.

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

Devo mettere "sudo" prima del comando trova?

Devo mettere "+" prima del numero di giorni "29"?

Risposta accettata:

Per prima cosa, inserisci il tuo find ... comando in un bash script e chiamalo script dal tuo crontab . Se hai una home directory crittografata (cat /home/.ecryptfs/$USER/.ecryptfs/Private.mnt ) dovrai memorizzare il tuo script al di fuori del tuo $HOME albero di directory. Mantenere un comando in crontab rende più difficili la configurazione, la registrazione e il debug e il crontab il parser dei comandi non è intelligente come bash 's.

Secondo, sempre, sempre, SEMPRE testare find con -print , e fallo funzionare, prima di considerare -delete .

Terzo, il find prova “-mtime 29 ” sta dicendo a find "Trova il mtime del file e restituisci True se è uguale a 29 . Dovresti usare -mtime +29 , che find vede come "more than 29 “, che è quello che vuoi. Da man find :

   Numeric arguments can be specified as

   +n     for greater than n,

   -n     for less than n,

   n      for exactly n.

In quarto luogo, assicurati di avere l'accesso in scrittura alle directory in /home/USER/DIRECTORY1/DIRECTORY2/ .

Quinto, intendi /home/USER/DIRECTORY1/DIRECTORY2/ o /home/$USER/DIRECTORY1/DIRECTORY2/ ? Se $USER è per l'ID utente dell'utente, hai un problema:cron non definisce $USER nell'ambiente di runtime. Definisce $HOME , quindi potresti usare $HOME/DIRECTORY1/DIRECTORY2 .


Ubuntu
  1. Come creare tar per file più vecchi di 7 giorni usando lo scripting della shell Linux

  2. Script bash per eliminare file più vecchi di x giorni con sottodirectory

  3. Come trovo tutti i file che *non* sono scrivibili dal gruppo?

  4. Come utilizzare il comando find per eliminare i file che corrispondono a un modello?

  5. Cron job per eliminare tutti i file più vecchi di 7 giorni con estensione in una cartella specifica - non funzionante

Come utilizzare il comando SED per trovare e sostituire la stringa nei file

Come trovare file sulla riga di comando di Ubuntu

Come trovare ed eliminare file duplicati in Ubuntu usando Fdupes

Come eliminare file più vecchi di giorni specificati in Linux

Crea ed elimina un lavoro Cron

Come si eliminano i file più vecchi di una data specifica in Linux?