Aquí hay un script rápido que hará lo que necesita:
#!/bin/bash
LOGDIR=/var/log/somedir
OLDLOGS=/var/log/keep-old-logs-here
PATH=/bin:$PATH
TODAY=$(date +'%Y%m%d')
[ -d $OLDLOGS ] || mkdir -p $OLDLOGS
cd $LOGDIR
for LOG in $(ls | egrep '^[[:digit:]]{8}$'); do
[ $LOG -lt $TODAY ] && gzip $LOG && mv $LOG.gz
done
Haga que el script sea ejecutable:
$ chmod +x /where/you/put/this/script
La entrada de crontab se verá así:
30 0 * * * /where/you/put/this/script
Solo ajuste LOGDIRy OLDLOGDIR. A las 12:30 a.m., moverá todos los registros en el formato AAAAMMDD para los días anteriores (y anteriores, si los hay).
Sí, pero en realidad no responde mi pregunta. Mi pregunta era si puedo usar logrotate para esto.
Šimon Tóth
@Let_Me_Be: pensé que estaba implícito en mi respuesta. No, logrotate no hará exactamente lo que quieres. Es decir, no solo puede hacer coincidir los archivos AAAAMMDD. De lo contrario puede acercarse al usar nodateext, olddir, compress, y dailyopciones.
propicio el
3
logrotate puede hacerlo con olddir si el nombre del archivo de registro es el mismo cada vez que se ejecuta y puede agregar fechas. Si el nombre del archivo de registro cambia, es decir, AAAAMMDD, logrotate no lo hará por usted.
Esta no es la respuesta. Los registros ya tienen sellos de fecha y están rotados de manera efectiva. Let_Me_Be solo quiere comprimirlos. Creo que @jmtd tiene razón.
Andrew Lorien
2
logrotateen sí mismo no hace esto. Recomiendo escribir un script complementario e invocarlo logrotateusando la postrotateopción en la configuración.
nodateext
,olddir
,compress
, ydaily
opciones.logrotate puede hacerlo con olddir si el nombre del archivo de registro es el mismo cada vez que se ejecuta y puede agregar fechas. Si el nombre del archivo de registro cambia, es decir, AAAAMMDD, logrotate no lo hará por usted.
Copias y gzips /logs/sys.log a /logs/logarchive/sys.20120101.log.gz, mantiene registros de una semana.
fuente
logrotate
en sí mismo no hace esto. Recomiendo escribir un script complementario e invocarlologrotate
usando lapostrotate
opción en la configuración.fuente