Назад | Перейти на главную страницу

вращение журналов с помощью logrotate

Я хочу запланировать ротацию журналов по следующим правилам:

  1. файлы журналов за последние 2 дня остаются нетронутыми
  2. файлы журналов старше 2 дней архивируются и перемещаются в папку, названную по дате их создания. (Например, все журналы за 1 декабря 2012 г. перемещены в 20121201 и заархивированы.)
  3. файлы журналов старше 14 дней удаляются.

Я хочу использовать для этого logrotate, но не уверен, что он подходит мне или нет.

Я бы хотел что-то подобное, но это не работает.

/mylog/* {   
prerotate
DIR=$(date +%y%m%d); // actually it's current date
mkdir $DIR
endscript
daily
rotate 2
olddir /mylog/$DIR
missingok
compress
postrotate
       find /mylog -type d -mtime +180 | xargs rm -f
endscript
}

Logrotate не понимает, что $ DIR является переменной.

Любые предложения приветствуются!

По словам @koniu от суперпользователя, это невозможно. Насколько я проверил, других способов не нашел.

Для возраста журнала у вас есть maxage директива, которая согласно странице руководства:

   maxage count
          Remove  rotated  logs  older  than <count> days. The age is only
          checked if the logfile is to be rotated. The files are mailed to
          the configured address if maillast and mail are configured.

Похоже, это не работает со старыми журналами, перемещенными в olddir.