Answers:
这是一个快速脚本,可以满足您的需要:
#!/bin/bash
LOGDIR=/var/log/somedir
OLDLOGS=/var/log/keep-old-logs-here
PATH=/bin:$PATH
TODAY=$(date +'%Y%m%d')
[ -d $OLDLOGS ] || mkdir -p $OLDLOGS
cd $LOGDIR
for LOG in $(ls | egrep '^[[:digit:]]{8}$'); do
[ $LOG -lt $TODAY ] && gzip $LOG && mv $LOG.gz
done
使脚本可执行:
$ chmod +x /where/you/put/this/script
crontab条目将如下所示:
30 0 * * * /where/you/put/this/script
只需调整LOGDIR
和OLDLOGDIR
。在上午12:30,它将以YYYYMMDD的格式移动前几天(如果有的话)的所有日志。
nodateext
,olddir
,compress
,和daily
选项。
如果您的日志文件名每次运行都相同,并且可以添加日期,则logrotate可以使用olddir进行操作。如果您的日志文件名更改了,即YYYYMMDD,那么logrotate不会为您完成此操作。
# sample logrotate conf file
copytruncate
compress
dateformat %Y%m%d.
dateext
extension log
olddir ./logarchive
/logs/sys.log {
rotate 7
daily
}
将/logs/sys.log复制并gzips到/logs/logarchive/sys.20120101.log.gz,保存一周的日志。