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

Как настроить logrotate, чтобы не удалять файлы журнала после ротации?

Есть способ сделать это?

В вашем logrotate.conf (или эквивалентном файле logrotate.d) измените строку с надписью "

rotate 10

(ваш номер может быть другим) на большее число. Это скажет ему хранить журналы столько дней. Вы можете сделать 36500, чего хватит на 100 лет.

Я искал это, чтобы производить ротацию резервных копий моей базы данных ежедневно, еженедельно и ежемесячно; поэтому я чередую файл ежедневно, но сохраняю файл для еженедельной ротации, и то же самое для ежегодной ротации.

Воспользуйтесь опцией копирования. Из руководства:

copy

копировать Сделайте копию файла журнала, но ни в коем случае не меняйте оригинал. Эту опцию можно использовать, например, для создания моментального снимка текущего файла журнала или когда какой-либо другой утилите необходимо обрезать или проанализировать файл. Когда используется этот параметр, параметр создания не действует, поскольку старый файл журнала остается на месте.

Не говоря уже о том, что вращение подразумевает удаление ... ;-)

Похоже, вы можете просто добавить слово «копировать» в соответствующий файл (вероятно, в /etc/logrotate.d). Например, сценарий apache2 logrotate будет выглядеть так:

/var/log/apache2/*.log {
    weekly
    missingok
    rotate 52
    compress
    delaycompress
    notifempty
    copy
    sharedscripts
    postrotate
        if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then
            /etc/init.d/apache2 reload > /dev/null
        fi
    endscript
}

Попробуйте это и посмотрите, сделает ли он то, что вы хотите.