logrotate - изменение файлов сжатия x количество дней - PullRequest
4 голосов
/ 21 декабря 2010

Есть ли способ заставить logrotate сжимать только файлы, измененные X количество дней назад (например, mtime +2)

Ответы [ 3 ]

8 голосов
/ 27 апреля 2012

Одним из вариантов может быть использование logrotate для поворота на другое расширение, а затем logrotate для поворота в сжатые файлы:

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

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

Эта хитрость Rube Goldberg приведет к следующему:1006 *

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

Таким образом, у вас есть два архивных дня журналов, которые распакованы.

2 голосов
/ 21 декабря 2010

Ну, вы можете использовать delaycompress, чтобы подождать еще один цикл. В основном, если вы выполняете ротацию ежедневно, то вчерашние журналы будут оставаться несжатыми.

Кроме того, вы можете попробовать не использовать logrotate для сжатия файлов и написать скрипт bash, который будет запускаться раз в день и сжимать все файлы старше определенной даты.

Вот учебник для bash, который мне лично нравится: http://www.linuxconfig.org/Bash_scripting_Tutorial

0 голосов
/ 04 мая 2012

Не могли бы вы сделать что-то вроде следующего?

/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
...