logrotate不删除旧文件 – glob失败

我被这个难住了 任何帮助深表感谢…!

将/ var / log / HOSTS / cacheflow_access_log /中的日志configuration为归档到/ var / log / HOSTS / archived / cacheflow_access_log /并进行压缩。 这些都是非常大的文件,所以只能保留1天,以便Splunk或Sawmill可以总结他们的内容。

日志旋转和压缩没有问题,但旧的压缩日志不会被删除。 logrotate的详细输出表明这是glob的问题。 它是在实时目录而不是在存档目录中查看? 如果是这样,我该如何解决这个问题? 如果没有,跆拳道是怎么回事?!

Logrotate conf:

# logrotate configuration for syslog files # global options rotate 1 missingok daily compress ifempty dateformat -%Y%m%d dateext ---SNIP--- /var/log/HOSTS/cacheflow_access_log/* { daily # only keep 1 day of cacheflow as they're massive files maxage 1 rotate 1 olddir /var/log/HOSTS/archived/cacheflow_access_log postrotate invoke-rc.d proftpd restart 2>/dev/null >/dev/null || true endscript } 

Logrotate详细输出:

 considering log /var/log/HOSTS/cacheflow_access_log/CF_5000_20120803_092129.log log needs rotating rotating log /var/log/HOSTS/cacheflow_access_log/CF_5000_20120802_120326.log, log >rotateCount is 1 Converted ' -%Y%m%d' -> '-%Y%m%d' dateext suffix '-20120803' glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' glob finding old rotated logs failed renaming /var/log/HOSTS/cacheflow_access_log/CF_5000_20120802_120326.log to /var/log/HOSTS/archived/cacheflow_access_log/CF_5000_20120802_120326.log-20120803 running postrotate script 

运行Debian Squeeze 2.6.32-5-686-bigmem

我知道在这个configuration中有不必要的重复(例如,旋转1不需要重复) – 这只是为了确保不是造成这个问题的问题。

谢谢!

也许这是失败的,因为日志文件在名称中已经有了date,所以每天都有一个新的名字。 通常情况下,我会看到带有静态名称的日志文件,而logrotate会添加一个扩展名以使其具有唯一性。 logrotate可能正在查找名为CF_5000_20120802_120326.log的归档目录中的旧文件以删除它们。 它没有find任何,因为每个文件的基本名称是唯一的。