Logrotate olddir with date

2

é possível configurar logrotate para criar um olddir por dia?

Gostaria de obter o mesmo resultado bash , assim:

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

Em /etc/logrotate.conf (pseudo-código):

/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
}

Obrigado a todos!

    
por Fabio 08.02.2012 / 09:57

1 resposta

2

Não é possível sem invadir logrotate .

No entanto, você pode "trapacear" e obter o mesmo efeito usando um symlink e um cron . Em seu logrotate.conf set olddir to /home/mhd-01/logs/olddir/ e crie um cronjob diário que faz:

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/

Certifique-se de que este novo cronjob seja executado antes do trabalho de logrotate - coloque-o em /etc/cron.daily/ com um número na frente (por exemplo, 01_linkrotate ) ou configure-o para ser executado à meia-noite (00:00)

Uma variante mais crua desta solução, sem links simbólicos, usaria cron para mover o conteúdo de olddir para o arquivo morto. O cronjob, executando após logrotate ou no final do dia (23:59), faria o seguinte:

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")/
    
por 26.06.2012 / 02:19