使用日期记录旧目录

使用日期记录旧目录

可以配置每天logrotate创建一个吗?olddir

我希望得到相同的bash结果,如下所示:

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

/etc/logrotate.conf(伪代码):

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

谢谢大家!

答案1

如果没有黑客攻击这是不可能的logrotate

不过,你可以“作弊”,使用符号链接计划任务在您的logrotate.conf设置中创建一个每日 cronjob,执行以下任务olddir/home/mhd-01/logs/olddir/

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/

确保这个新的 cronjob 在 logrotate 作业之前运行 - 要么/etc/cron.daily/在前面加上一个数字(例如01_linkrotate)或者将其设置为在午夜(00:00)运行


此解决方案的一个更粗略的变体(没有符号链接)可用于cron将内容移动olddir到存档。 cronjob 在 logrotate 之后或一天结束时(23:59)运行,将执行以下操作:

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")/

相关内容