GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Cómo crear un trabajo cron que elimine automáticamente los archivos que tienen más de 30 días?

Estoy usando el escritorio Ubuntu 14. Uso esta máquina para respaldar otras máquinas y como servidor FTP para las cámaras de seguridad.

Necesito crear un trabajo cron que elimine automáticamente los archivos que tengan más de 30 días. Hice una búsqueda y creo que encontré el comando correcto, pero quiero asegurarme de que no me falta nada antes de ejecutarlo.

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

¿Necesito poner "sudo" antes del comando de búsqueda?

¿Necesito poner "+" antes del número de días "29"?

Respuesta aceptada:

Primero, coloca tu find ... comando en un bash script, y llame a ese script desde su crontab . Si tiene un directorio de inicio cifrado (cat /home/.ecryptfs/$USER/.ecryptfs/Private.mnt ) tendrá que almacenar su secuencia de comandos fuera de su $HOME árbol de directorios. Mantener un comando en crontab hace que la configuración, el registro y la depuración sean más difíciles, y el crontab El analizador de comandos no es tan inteligente como bash ‘s.

Segundo, siempre, Siempre, SIEMPRE prueba find con -print y haz que funcione, antes de considerar -delete .

Tercero, el find prueba “-mtime 29 ” está diciendo find “Encuentre el mtime del archivo y devuelve True si es igual a 29 . Deberías usar -mtime +29 , que find ve como “more than 29 “, que es lo que quieres. De man find :

   Numeric arguments can be specified as

   +n     for greater than n,

   -n     for less than n,

   n      for exactly n.

Cuarto, asegúrese de tener acceso de escritura a los directorios en /home/USER/DIRECTORY1/DIRECTORY2/ .

Quinto, ¿te refieres a /home/USER/DIRECTORY1/DIRECTORY2/? o /home/$USER/DIRECTORY1/DIRECTORY2/ ? Si $USER es para el ID de usuario del usuario, tiene un problema:cron no define $USER en el entorno de tiempo de ejecución. Sí define $HOME , por lo que podría usar $HOME/DIRECTORY1/DIRECTORY2 .


Ubuntu
  1. ¿Cómo eliminar todos los archivos anteriores a X número de días en Linux?

  2. ¿Cómo configurar un cron para realizar una copia de seguridad de la base de datos MySQL diariamente y eliminar los archivos de copia de seguridad más antiguos que tienen más de 10 días?

  3. Cómo eliminar archivos de más de N días usando tmpreaper en Linux

  4. buscar y eliminar archivos o carpetas con más de x días

  5. ¿Cómo se eliminan archivos anteriores a la fecha específica en Linux?

Cómo usar el comando SED para buscar y reemplazar cadenas en archivos

Cómo encontrar archivos en la línea de comandos de Ubuntu

Cómo encontrar y eliminar archivos duplicados en Ubuntu usando Fdupes

Cómo eliminar archivos anteriores a los días especificados en Linux

¿Eliminar todos los archivos y carpetas en /tmp que tengan más de un día?

Crear y eliminar un trabajo cron