尝试在我的转储文件夹中配置 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 文件。