Questão Logrotate olddir com data


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

Eu gostaria de ter o mesmo bash resultado, assim:

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

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


2


origem




Respostas:


Não é possível sem hacking logrotate.

No entanto, você pode "trapacear" e obter o mesmo efeito usando um link simbólico e cron. Na tua logrotate.conf conjunto olddir para /home/mhd-01/logs/olddir/ e crie um cronjob diário que:

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 logrotate - /etc/cron.daily/ com um número na frente (por exemplo 01_linkrotate) ou configurá-lo 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. O cronjob, rodando 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")/

2



Pode ser mais enviado para criar o symlink de um prerotate quadra. Nenhum cronjob separado necessário .... - Gert van den Berg