Ahí va un script para eliminar de un directorio los archivos más antiguos de X dias y rotar los demás en función de si un fichero o directorio ocupa más de Y megas
#!/bin/bash
#Variables
# Dias que conservamos los ficheros
DAZE=15
# Longitud del fichero
LONG=30
DIR=/logs/
FILE=fichero
SERV=/etc/init.d/servicio
FICH=${DIR}$FILE
#Comprobamos si FICHERO ocupa mas de LONG MB
if [ `du -cms $FICH | tail -1 | cut -f1` -ge $LONG ] ; then
#Paramos el servicio SERV
$SERV stop
#Esperamos 2 minutos (pura precaucion para que el servidor pare)
sleep 120;
# Movemos el fichero
mv $FICH ${FICH}$(date +%d%m%y)
cat /dev/null > $FICH
$SERV start
#Eliminamos los ficheros más antiguos de DAZE dias
rm -f $(find $DIR -ctime +$DAZE)
fi
2 comentarios:
¿¿¿Coño, y por qué no usar simplemente logrotate???
Que ganas de reinventar la rueda, nene...
Porque este script se basa en el tamaño de un fichero o directorio, no en el tiempo.
Publicar un comentario