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

Как переместить сжатые файлы с помощью logrotate

Это, наверное, безумно легко сделать, но я не могу найти ничего, имеющего отношение к теме. Я настраиваю собственный файл logrotate.conf для журналов в нашем сервисе. В рамках этого я хотел бы хранить журналы до 7 дней, сжимать все, что старше 7 дней, и удалять все, что старше 22 дней. Пока что я пытаюсь проверить, могу ли я переместить сжатые файлы в другой каталог, чтобы не загромождать основной каталог журнала.

Мои правила пока следующие:

/home/user1/logs/profile_service/*.log
{
    daily
    rotate 7
    copytruncate
    compress
    postrotate
                mv /home/user1/logs/profile_service/*.gz /home/user1/logs/archive/profile_service/
    endscript
}

Я понимаю, что postrotate должен перемещать эти файлы .gz в каталог архива. Однако, когда я вручную запускаю logrotate:

logrotate -f /home/user1/logrotate.conf

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

mv: cannot stat ‘/home/user1/logs/profile_service/*.gz’: No such file or directory
logrotate_script: line 2: compress: command not found
error: error running non-shared postrotate script for /home/user1/logs/profile_service/profile.log of '/home/user1/logs/profile_service/*.log
'

Когда я не включаю postrotate для перемещения файлов, файлы сжимаются нормально.

Пытаться lastaction/endscript

На странице руководства:

Строки между lastaction и endcript (обе должны появляться в строках сами по себе) выполняются (с использованием / bin / sh) один раз после поворота всех файлов журнала, соответствующих шаблону с подстановочными знаками, после запуска сценария postrotate и только если хотя бы один журнал повернут. Эти директивы могут появляться только внутри определения файла журнала. В качестве первого аргумента скрипту передается весь шаблон. Если сценарий завершается с ошибкой, отображается только сообщение об ошибке (так как это последнее действие). См. Также первое действие.