8

有没有办法让 logrotate 只压缩 X 天前修改的文件(例如 mtime +2)

4

3 回答 3

13

一种选择是用于logrotate旋转到不同的扩展名,然后用于logrotate旋转到压缩文件:

/var/log/raw.log {
  daily
  nocompress
  extension .old
  }

/var/log/*.old {
  daily
  compress
  delaycompress
  rotate 10
  }

这个 Rube Goldberg 装置将产生以下结果:

raw.log
raw.log.old
raw.log.old.1
raw.log.old.2.gz
raw.log.old.3.gz

因此,您有两天存档的未压缩日志。

于 2012-04-27T02:44:16.640 回答
5

好吧,您可以使用 delaycompress 再等待一个周期。基本上,如果您每天轮换,那么它将保持昨天的日志未压缩。

除此之外,您可以尝试不使用 logrotate 来压缩文件并编写一个 bash 脚本以每天运行一次并压缩所有早于某个日期的文件。

这是我个人喜欢的 bash 教程:http ://www.linuxconfig.org/Bash_scripting_Tutorial

于 2010-12-21T02:27:50.840 回答
-1

你能做类似下面的事情吗?

/var/log/access.log {
    daily
    nocompress
}

/var/log/access.7.log {
     daily
     compress
}

我认为这会给你类似的东西

access.log
access.1.log
access.2.log
access.3.log    
access.4.log
access.5.log
access.6.log
access.7.log.gz
access.8.log.gz
access.log
于 2012-05-04T19:41:03.643 回答