gpt4 book ai didi

bash - logrotate:即使日志没有旋转,你也可以运行 postrotate 吗?

转载 作者:行者123 更新时间:2023-12-03 01:07:40 25 4
gpt4 key购买 nike

我有一个备份脚本 (backup.sh),可以通过 ssh 连接到另一台计算机,压缩文件,然后 scp 将此文件 (backup_data.tar.gz) 返回到我的本地机器。我的本地计算机上还有一个 logrotate 文件:

/opt/backups/backup_data.tar.gz {
nocompress
daily
rotate 7
extension .tar.gz
missingok
postrotate
/opt/backups/backup.sh
endscript
}

因此,第一次执行 logrotate 时,要旋转的日志文件不存在(因为 backup.sh 脚本尚未执行)。我缺少ok,所以它继续并且不会抛出错误,但似乎没有执行backup.sh,因为第一次运行后,backup_data.tar.gz仍然不存在。我相信 postrotate 仅在文件旋转时才执行,有没有办法解决这个问题并让它执行?

最佳答案

logrotate 仅当至少有一个日志文件已轮换时才会运行脚本(prerotate、postrotate、firstaction、lastaction)。通过运行 backup.sh 一次来引导该过程是可行的,但如果将来失败,您将不会有新的备份,直到您进行干预。

我会创建一个单独的 logrotate 配置文件,例如

/opt/backups/logrotate.conf:

/opt/backups/backup_data.tar.gz {
nocompress
daily
rotate 7
extension .tar.gz
missingok
}

接下来修改您的 backup.sh 并在脚本顶部插入对 logrotate 的调用:

logrotate --state=/opt/backups/logrotate.state /opt/backups/logrotate.conf

最后,将 backup.sh 设置为每天运行,例如crontab -e/sudo crontab -e -u backupuser:

15 2    * * *   /path/to/backup.sh

关于bash - logrotate:即使日志没有旋转,你也可以运行 postrotate 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28372494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com