我想根据以下规则安排日志轮换:
- 过去 2 天的日志文件保持不变
- 超过 2 天的日志文件将被归档并移动到按创建日期命名的文件夹中。(例如,2012 年 12 月 1 日的所有日志都将移动到 20121201 并归档。)
- 超过 14 天的日志文件将被删除。
我想为此使用 logrotate,但我不确定它是否适合我的需要。
我想要这样的东西,但它不起作用。
/mylog/* {
prerotate
DIR=$(date +%y%m%d); // actually it's current date
mkdir $DIR
endscript
daily
rotate 2
olddir /mylog/$DIR
missingok
compress
postrotate
find /mylog -type d -mtime +180 | xargs rm -f
endscript
}
Logrotate 不理解 $DIR 是变量。
欢迎任何建议!
答案1
根据超级用户 @koniu 的说法,这不可能据我检查,我没有找到其他方法。
对于日志的年龄,您有一个maxage
根据手册页的指令:
maxage count
Remove rotated logs older than <count> days. The age is only
checked if the logfile is to be rotated. The files are mailed to
the configured address if maillast and mail are configured.
看起来它对在 olddir 中移动的旧日志不起作用。