可以配置每天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")/