为什么 logrotate 会进行额外的旋转?

为什么 logrotate 会进行额外的旋转?

尝试在我的转储文件夹中配置 logrotate 进行每天 10 次轮换,我有 11 次轮换(mydump.sql,mydump.sql.1 ... mydump.sql.11),为什么?

这是 /etc/logrotate.d/ 中的 logrotate 配置文件(我正在运行带有 logrotate 3.7.8 的 Ubuntu server 12.4 LTS):

/home/alepac/dumps/mydump.sql {
    rotate 10
    daily
    nomissingok
    create
    nocompress
    nocopy
    prerotate
        mysqldump -u alepac -pThisIsNotMyPwd myDatabase > /home/alepac/dumps/mydump.sql
    endscript
    postrotate
        rsync -avz --partial --delete /home/alepac/dumps/ my-remote-server.no-ip.biz:/home/alepac/db-backups/dbs/customer/ > /tmp/rsync.stdout 2> /tmp/rsync.stderr
    endscript
}

为了更好地解释,我正在轮换 mysql 数据库的转储;我在轮换前进行转储,然后在轮换后使用 rsync 轮换并将转储目录与远程机器同步。最后,选项create会生成一个新的零大小转储以确保下一次轮换。

答案1

问题是由 rsync 引起的。postrotate 脚本在删除旧日志文件之前执行,因此在远程位置我始终有 mydump.sql.11 文件。此外,如果 postscript 失败(例如,当出现网络问题时 rsync 将失败),则不会执行其余操作,因此 logrotate 不会删除 mydump.sql.11 文件。

相关内容