El Sun, 16 Jan 2011 21:36:47 +0100, Javier Barroso escribió: > 2011/1/16 Javier Barroso: >> 2011/1/16 Camaleón:
>>> *** >>> # 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") Huys, es verdad, se me fue la "z", ¡gracias! Lo de los "*log.gz" no hará falta, prefiero mantener los registros mensuales sin compresión y comprimir al final del año, esa era mi idea inicial. Y en lo del rm -f no había caído, lo añadiré, pero el primer año le diré que elimine nada... "por si" :-} >>> 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" Hey, eso ya parece otra cosa... mola, muchas gracias :-) (probado y va de lujo) He hecho alguna modificación para que 1) el "find" no sea recursivo y no afecte a otros subdirectorios con archivos .log y para que 2) el archivador no mantenga la información de la ruta (./), a ver qué te parece: *** function comprimir_logs { tipo="$1" anyo_anterior=$(date +'%Y' -d '1 year ago') - ficheros=($(find /var/log/apache2 -name "$tipo.$anyo_anterior*.log*")) + ficheros=($(find /var/log/apache2 -maxdepth 1 -name "$tipo.$anyo_anterior*.log*" -exec basename {} \;)) if [ ${#ficheros} -gt 0 ] then tar -zcf /var/log/apache2/$tipo.$(date +'%F').tar.gz ${ficheros[*]} if [ $? -eq 0 ] then rm -f ${ficheros[*]} else echo "Algo ha ido mal" | mail -s "fallo al comprimir $tipo" xxx@yyy fi fi } comprimir_logs error comprimir_logs access *** Bueno, creo que al final me habéis convencido con lo del script, mañana lo pongo en producción y el año que viene ajustaremos cuentas... si pasa algo "gordo" mi alma errante os perseguirá cual ojo de Sauron sobre el Anillo Único y si todo va bien os habréis ganado una cerveza/zumo virtual >>;-P ) Saludos, -- Camaleón -- 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/pan.2011.01.16.22.55...@gmail.com