2011/1/16 Javier Barroso <javibarr...@gmail.com>: > 2011/1/16 Camaleón <noela...@gmail.com>: >> El Sun, 16 Jan 2011 14:11:05 +0100, fernando sainz escribió: >> >>> El día 16 de enero de 2011 13:23, Camaleón escribió: >>>> El Sun, 16 Jan 2011 01:21:47 +0100, Javier Barroso escribió: >> >> (...) >> >>>>> Cuéntanos si consigues hacer exactamente lo que quieres sólo con >>>>> logrotate, yo creo que más bien me haría un cutre-script ... sobre >>>>> todo para comprimir todos los logs del año en un fichero .. quizás >>>>> como han comentado por aquí usando el postrotate (comprobar que no >>>>> exista un fichero comprimido de ese año y luego generarlo) >>>> >>>> Sí, eso es lo que estaba pensando, tal y como comentaba Fernando, que >>>> tendría que tirar de algún script que se encargara de esto, pero tengo >>>> que mirarlo con calma porque el "postrotate" se ejecuta tras cada >>>> rotación (en mi caso, cada mes) pero sólo debería ejecutar la >>>> compresión de los archivos tras 12 rotaciones (que sería 1 año) y no sé >>>> bien cómo obtener esa variable (hum, ¿podría usar un "if rotate > 12 >>>> then gzip"?) O:-). >>>> >>>>> Saludos >>>>> [1] http://httpd.apache.org/docs/2.0/programs/rotatelogs.html >>>> >>>> Saludos y gracias a los dos por las sugerencias. >>>> >>>> >>> No se exactamente que quieres hacer, pero contar ficheros es fácil. ls >>> /dir | wc -l >> >> Je, pues sí, no se me había ocurrido. A ver qué os parece esta "cosa" que >> he preparado (ojo, que no está probado directamente con el logrotate, sólo >> he hecho una prueba "a capela", ejecutando el script directamente sobre un >> directorio con archivos pre-creados): >> >> *** >> # 20110116 archive old access logs on a per year basis >> if [ `ls access.*.log | wc -l` -gt 12 ]; then >> tar -cf access.$(date '+%F').tar.gz access.$(date '+%Y' --date='1 year >> ago')*.log >> # let's check how it works before deleting >> # rm access.$(date '+%Y' --date='1 year ago')*.log >> fi >> *** > > Te falta el z en el tar y seguramente ajustar el script para que te > pille los *log.gz ..., y luego el -f en el rm (es bueno que en los > servidores rm sea un alias a "rm -i") > > >> >> La idea es que el primero de enero de cada año, al ejecutarse la rutina del >> logrotate, el script detecte que ya hay 12 archivos access.*.log y genere el >> archivador con los registros del año pasado. >> >> A mí me parece un poco "cutrecillo" pero creo que funcionaría salvo que se >> me haya pasado algo por alto y no me dé cuenta hasta el año que viene O:-) >> >> Si se os ocurre alguna idea o mejora (por ejemplo, cómo añadir >> "elegantemente" en el mismo script los archivos "error.*.log", más allá de >> copiar/pegar el mismo bloque y cambiando el nombre :-P), avisad. > A mi se me ocurre mejor que comprimir si hay 12 ficheros, mirar a ver > si hay ficheros del año anterior y comprimirlos si los hay. > > Mi propuesta con bash (puedes coger la idea del tipo para ajustar tu > función sin tener que copiar / pegar :) ): > > function comprimir_logs > { > tipo="$1" > anyo_anterior=$(date +'%Y' -d '1 year ago') > ficheros=($(find /var/log/apache2 -name "$tipo.$anyo_anterior*.log*")) > if [ ${#ficheros} -gt 0 ] > then > tar -zcf /var/log/apache2/$tipo.$(date +'%F').tar.gz ${ficheros[*]} > if [ $? -eq 0 ] > then > rm -f ${ficheros[*] ^}^
# había ese pequeño "tipo" Saludos -- To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/AANLkTimVfk7-PTA4ehKgR_Rzir2BQHJo-8tcUM2=q...@mail.gmail.com