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
.