Docker 应用 cron job 定时自动本地备份 - docker 备份小白教程二(2/3)

数据无价,希望大家做好备份,而且不要觉得备份了就无忧了,一定要确认所做的备份是可用的。在测试机器上恢复一下所做的备份,恢复后确认所有的数据和设置都没有问题才算真正合格的备份。我都是确认某个 docker 应用的备份是可以恢复的,才会开始用这个应用。
这里仅提供一些简单的思路,请勿完全生搬硬套,不同的 docker 可能部署的方式不同,备份的方法也有差异。
本地备份上篇已经讲过了,下面说一下如何定时自动备份
最简单的方法就是用 Linux 自带的 cron job,建议在 root 下设置
这里以第一篇里的 ghost 博客为例
编辑 cron job
crontab -e
# 选择 nano 编辑器,就和用 nano 编辑器一样
# 编辑完成之后,按 control+x 退出,然后按 y 保存,再按回车确认退出
加入下面内容,就可以定时备份了
0 0 * * * tar -C /root/docker/ghost -czvf /root/backup/ghost.tar.gz ./
# 0 0 * * * 是定时的设置,这里是每天凌晨12点运行
# 定时的设置对新手来说有些复杂,可以参考这个网站 https://crontab-generator.org/
# 下面给几个例子
# 0 * * * * 每小时运行一次
# 0 0,12 * * * 每天中午和凌晨12点运行
# 0 */6 * * * 每6小时运行一次
上面的备份只能保留一个文件,新的文件会覆盖旧文件,要想保留多个备份文件,就需要加上时间标记
0 0 * * * tar -C /root/docker/ghost -czvf /root/backup/"ghost-$(date +\%Y\%m\%d_\%H\%M).tar.gz" ./
0 0 * * * mysqldump -u root ghost > /root/backup/"ghost-$(date +\%Y\%m\%d_\%H\%M).sql"
# 每天凌晨12点备份 ghost 目录和数据库,并且给文件名加入时间标记
进阶一下,给数据库的备份文件压缩一下,可以节省不少空间
最后的版本,只要有这二行,就可以定时自动备份 ghost 博客应用了
0 0 * * * tar -C /root/docker/ghost -czvf /root/backup/"ghost-$(date +\%Y\%m\%d_\%H\%M).tar.gz" ./
0 0 * * * mysqldump -u root ghost | gzip > /root/backup/"ghost-$(date +\%Y\%m\%d_\%H\%M).sql.gz"
# 每天凌晨12点备份,并且在文件上加入时间标记,并且压缩数据库文件
# 最后再进阶一下,加上下面这句,删除超过30天的备份文件
0 0 * * * find /root/backup -type f -mtime +30 -delete >/dev/null 2>&1
# +30 只保留最近30天的备份文件,可以根据自己的需要修改
小提示:用下面命令对于压缩的数据库备份进行解压还原
zcat ghost-20250320_0000.sql.gz | mysql -u root ghost
这样就完全设置好了自动定时本地备份,第一次设置时可能需要一点时间,但是一旦设置好就不用管了