如何使用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来移动文件时 ,文件将正常压缩。

0
задан 7 November 2019 в 23:07
1 ответ

Попробуйте lastaction/endscript

From the man page:

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

.
0
ответ дан 5 December 2019 в 00:02

Теги

Похожие вопросы