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 .