使用文件名中的时间戳旋转日志文件

我有一个日志目录,我的应用程序写入。 它创build一个这样的日志文件

2015-01-22-10-full-activity.log 2015-01-22-11-full-activity.log 2015-01-22-12-full-activity.log 2015-01-22-13-full-activity.log 

我想压缩除最新文件以外的每个文件,并删除超过3天的任何文件。

我以为logrotate能够为我做这件事,但我无法理解它,可能是因为我用名字命名我的活动日志。

有任何想法吗?

如果你已经创build了名称中的date的文件,logrotate不是答案; 它是基于应用程序的想法总是写入相同的日志文件(例如/var/log/app/output.log),然后logrotate负责重命名/压缩文件,并告诉应用程序重新打开原来的目标文件。

在这种情况下,可能是一对使用-mtime“查找”的cron作业,例如:

1 0 * * * root find /path/to/logs/*.log -mtime +1 -daystart -exec gzip {} \;

2 0 * * * rootfind/path/to/logs/*.log.gz -mtime +3 -daystart -delete

你可能希望摆弄-mtime上的数字和-daystart(或不使用)来得到你想要的精确结果(取决于你想如何计算“天数”等)