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:


Compártelo:

FacebookTwitterDiggGoogle BookmarksLinkedIn

Daniel Romero Sanchez
Author: Daniel Romero SanchezWebsite: https://www.dbigcloud.com
Responsable de sistemas y Arquitecto Cloud - vExpert 2015/19- VCP550-DCV - LPIC-1


Escribir un comentario

Código de seguridad
Refescar

DBigCloud en tu idioma

esenfrdeitpt

Gold Sponsor

 

vExpert 2020

DbigCloud newsletter

Suscribete a nuestra newsletter y recibe cada semana los mejores artículos seleccionados por DBigCLoud.
Email type
Please wait