Posso usare logrotate per comprimere i log giornalieri (con nome della data)?


8

Ho registri nel seguente formato: AAAAMMGG

Voglio comprimere i vecchi registri (più vecchi di quelli attuali) e magari spostarli in una directory diversa in seguito.

Posso farlo in logrotate o devo usare uno script personalizzato in cron?

Risposte:


4

Ecco uno script rapido che farà ciò di cui hai bisogno:

#!/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

Rendi eseguibile lo script:

$ chmod +x /where/you/put/this/script

La voce crontab sarà simile a:

30 0 * * * /where/you/put/this/script

Basta regolare LOGDIRe OLDLOGDIR. Alle 12:30 sposta tutti i registri nel formato AAAAMMGG per i giorni precedenti (e precedenti, se presenti).


4
Sì, ma in realtà non risponde alla mia domanda. La mia domanda era se posso usare logrotate per questo.
Šimon Tóth,

@Let_Me_Be - Ho pensato che fosse implicito nella mia risposta. No, logrotate non farà esattamente quello che vuoi. Cioè, non puoi solo abbinare i file AAAAMMGG. In caso contrario, è possibile avvicinarsi utilizzando nodateext, olddir, compress, e dailyle opzioni.
unpythonic il

3

logrotate può farlo con olddir se il nome del file di registro è lo stesso ogni volta che viene eseguito e puoi aggiungere date. Se il nome del tuo file di registro cambia, ad esempio AAAAMMGG, logrotate non lo farà per te.

# sample logrotate conf file
copytruncate
compress
dateformat %Y%m%d.
dateext
extension log
olddir ./logarchive

/logs/sys.log {
    rotate 7
    daily
}

Copia e gzips /logs/sys.log in /logs/logarchive/sys.20120101.log.gz, conserva registri per una settimana.


1
Questa non è la risposta I log dispongono già di datestamp e vengono effettivamente ruotati Let_Me_Be vuole solo comprimerli. Credo che @jmtd abbia ragione.
Andrew Lorien,

2

logrotatedi per sé non lo fa. Consiglio di scrivere uno script supplementare e di invocarlo logrotateutilizzando l' postrotateopzione nella configurazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.