Logrotate olddir mit Datum

2486
Fabio

ist es möglich zu konfigurieren logrotate, olddirpro Tag zu erstellen ?

Ich möchte das gleiche bashErgebnis wie folgt erhalten:

user@blade1022m:~$ date "+%y%m%d" 120208 

In /etc/logrotate.conf (Pseudo-Code):

/home/mhd-01/logs/*.log { daily missingok rotate 62 olddir /home/mhd-01/logs/archive/${`date "+%y%m%d"`}/ postrotate /etc/init.d/apache2 restart } 

Danke euch allen!

2

1 Antwort auf die Frage

2
koniu

Ohne Hacking geht es nicht logrotate.

Sie können jedoch mit einem Symlink und Cron "cheaten" und denselben Effekt erzielen . In Ihrem logrotate.confSatz olddirauf /home/mhd-01/logs/olddir/und ein tägliches Cronjobs erstellen, das tut:

mkdir /home/mhd-01/logs/archive/$(date "+%y%m%d") ln -sf /home/mhd-01/logs/archive/$(date "+%y%m%d") /home/mhd-01/logs/olddir/ 

Stellen Sie sicher, dass dieser neue Cronjob vor dem Logrotate-Job ausgeführt wird - entweder stecken Sie ihn /etc/cron.daily/mit einer Nummer in die Front (zB 01_linkrotate) oder setzen Sie ihn auf Mitternacht (00:00)


Eine gröbere Variante dieser Lösung ohne Symlinks würde cronden Inhalt des olddirArchivs in das Archiv verschieben. Der Cronjob, der der Logrotate oder am Ende des Tages (23:59) hinterher läuft, würde Folgendes tun:

mkdir /home/mhd-01/logs/archive/$(date "+%y%m%d") mv /home/mhd-01/logs/olddir/* /home/mhd-01/logs/archive/$(date "+%y%m%d")/ 
Es könnte mehr gesendet werden, um den Symlink aus einem `vorrotierten 'Block zu erstellen. Kein separater Cronjob nötig .... Gert van den Berg vor 7 Jahren 0