通过群晖定时备份Docker容器的网站和MySQL数据库

群晖搭建网站很方便,但是为了防止数据丢失,定时备份还是需要的。什么宝塔面板类一键备份很容易,但是Docker下的教程比较少。今天杨公子收集整理了如何备份Docker容器下的网站数据库。

备份网站脚本

比如Docker容器的网站文件都在web_packages文件夹中,现在要备份到群晖根目录下面的/file/Backup文件中

# 进入到备份文件夹
cd /volume1
#压缩网站数据
tar zcvf web_$(date +"%Y%m%d").tar.gz web_packages

mv web_$(date +"%Y%m%d").tar.gz /volume1/file/Backup
# 删除3天前备份文件
rm /volume1/file/Backup/web_$(date -d -3day +"%Y%m%d").tar.gz

备份docker mysql数据脚本

将docker容器中mysql的数据库备份到群晖根目录/volume1/file/BackUp文件夹下面

#当前日期
BACKUP_PATH=/volume1/file/BackUp
DATE=$(date +%Y%m%d)
MYSQL_PWD=数据库密码

#查询所有数据库
DATABASES=$(docker exec -i mysql容器id mysql  -uroot -p$MYSQL_PWD -e "show databases" | grep -Ev "Database|sys|information_schema|performance_schema|mysql")
#循环数据库进行备份
for db in $DATABASES
do
echo
if [[ "${db}" =~ "+" ]] || [[ "${db}" =~ "|" ]];then
echo "jump over ${db}"
else
echo ----------$BACKUP_PATH/${db}_$DATE.sql.gz BEGIN----------
docker exec -i 926fe034bb2920ae330275f1656ce2303125c3a65bfe7be42891f530bbcc61da mysqldump -uroot -p$MYSQL_PWD --default-character-set=utf8 -q --lock-all-tables --flush-logs -E -R --triggers -B ${db} | gzip > /var/tmp/${db}_$DATE.sql.gz
mv /var/tmp/*.sql.gz $BACKUP_PATH
echo ${db}
echo ----------$BACKUP_PATH/${db}_$DATE.sql.gz COMPLETE----------
echo
fi
done

echo "done"

原文链接:https://zhuanlan.zhihu.com/p/571807068

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片