No sé cómo he podido vivir tanto tiempo sin conocer tmpwatch, una herramienta que suele venir con el sistema y que nos permite automatizar el mantenimiento de directorios que por su naturaleza, acumulan ficheros temporales que pocas veces se vuelven a usar. tmpwatch, por lo tanto, busca los ficheros y directorios antiguos en una determinada ubicación, y los elimina de forma recursiva. Lo que antes solía hacer con una instrucción como la siguiente, ahora lo haré con tmpwatch:
# eliminación ficheros con más de 365 días desde la última modificación desde el directorio actual
find . -mtime +365 -exec rm {} \;# eliminación ficheros con más de 365 días desde la última modificación desde el directorio actual y sub-directorios
find . -depth -mtime +365 -exec rm {} \;
Un ejemplo muy claro, es usar tmpwatch para eliminar los ficheros que no se han usado (access time) en los últimos x días (o meses) dentro de directorios como /tmp o ~/Downloads. En cuanto a servidores, seguro que tendemos la típica aplicación que va dejando cientos de archivos temporales en una determinada ubicación, que hemos de estar borrando cada cierto tiempo ya sea a mano o con algún script programado en el cron.
Podemos testear tmpwatch con la opción «–test» para que únicamente nos devuelva por pantalla el listado de ficheros/directorios que se eliminarían con la instrucción ejecutada, pero sin eliminarlos. En el siguiente ejemplo veremos qué ficheros/directorios se eliminarían del directorio /tmp, que no se hayan usado en más de 365 días (atime):
[root@~]# tmpwatch –test 365d /tmp
OJO: Según la versión de tmpwatch, podremos usar el carácter d (días), h (hours) o m (minutes) para definir el tiempo. Otras versiones de tmpwatch hacen caso omiso de este carácter y siempre cogen el parámetro para el tiempo en horas!! Podremos verificarlo haciendo un «man tmpwatch» y leyendo la descripción para saber si se incluye o no esa posibilidad.
Por defecto, tmpwatch usará el access time para determinar si se ha de eliminar o no un fichero. Si queremos, se puede indicar por parámetro que use el mtime (modification time) o ctime (inode change time) en lugar del atime. Así podríamos querer usar:
[root@~]# tmpwatch –test –mtime –dirmtime 365d /tmp
- –mtime: miraremos la fecha de modificación del archivo para tomar la decisión de eliminarlo o no.
- –dirmtime: para los directorios, también usaremos su fecha de modificación.
Cuando tengamos claros los parámetros a usar, ya podremos definir nuestro cron para olvidarnos del mantenimiento de ese directorio temporal tan molesto:
0 1 * * * tmpwatch –mtime –dirmtime 365d /data/tmpfiles
NOTA: Es importante tener en cuenta la cuenta con la que se ejecutará el cron, y a quién pertenecen los ficheros/directorios del directorio a mantener. Si no se tienen suficientes permisos es probable que no se pueda realizar el mantenimiento.
Fuente:
http://www.linuxlefty.com/Tools/tmpwatch.html
Foto por Marcin Wichary
Buen artículo! Muchas gràcias… Cada vez tengo más claro que por mucho tiempo que lleves trabajando con Linux siempre hay alguna orden nueva. Gràcias pos hacerme descubrir tmpwatch. Añado este link a la wiki que mantengo http://acacha.org/mediawiki/index.php/Tmpwatch
¡Gracias a tí Sergi!
Buena Wiki, i a més en català! Millor que millor 🙂
Me sacaste de un apuro