Purgando ficheros de log, me he encontrado con un servidor linux con un directorio en el que se habían generado muchísimos ficheros entre varios meses, como ya tenia backup de ellos he decidido eliminar aquellos fichero comprendidos entre esos meses, os voy a explicar como lo he realizado a través de la consola de linux.
Lo primero de todo queria saber cuanto ocupaban dichos ficheros, por lo que me he usado el comando du con la opción --time que muestra la última fecha de modificación.
du -sh --time *
El problema que tenemos con el comando lanzado anteriormente, es que nos muestra todos los ficheros que tenemos, la forma de realizar el filtrado entre fechas es usando con el comando awk.
du -sh --time * | awk '$2 >= "2010-01" && $2 <= "2010-08"'
Como podéis observar en awk usamos $2, este numero corresponde a la columna en la que se muestra la fecha al lanzar el comando du -sh --time *.
Una vez listado todo los ficheros, voy a proceder a borrarlos, podemos seguir usando los mismos comandos con la combinación de xargs que se encargará de pasar la lista de ficheros filtrados a la entrada estándar del comando rm.
du -sh --time * | awk '$2 >= "2014-10" && $2 <= "2014-11"' | xargs rm -rf
Como siempre digo, en programación y sobre todo en bash, existen muchas formas de hacer las cosas, ¿Cual es la correcta? pues dependerá de cada uno, por lo que si tenéis otro método para realizar esto, podéis comentarlo con nosotros.
Quizás te interese las siguientes entradas sobre Linux:
- AWS - Deshacer actualizaciones de paquetes en Amazon Linux
- Configurar syslog en Linux para dividir los log por criticidad
- Realizando migraciónes parciales con rsync en Linux
- Realizando peticiones soap a un web service con curl en bash
- Usa tus propios scripts a través de SNMP en Linux
- Eliminado ficheros en linux comprendidos entre dos fechas
- Configurar bonding de interfaces de red en linux
- Como crear una relación de confianza entre dos servidores Linux
- Ampliar un filesystem con LVM de un Servidor Virtual Linux
Compártelo: