#!/bin/bash
dateBackup=$(date +%Y-%m-%d_%H:%M:%S)
dir=/app/mysql/bf/backup
# 宿主机新建目录,通过挂载会自动添加到容器
if [ ! -d "${dir}" ];
then
mkdir ${dir}
echo "创建文件夹 ${dir} 成功" >> ${dir}/log/${dateBackup}Debug.log
else
echo "创建文件夹 ${dir} 失败,文件夹已存在" >> ${dir}/log/${dateBackup}Debug.log
fi
# 需要备份的数据库名
echo "-----------------> 备份所有数据库 <-----------------" >> ${dir}/log/Debug.log
docker exec -i 25efbbc261f7 sh -c "mysqldump -uroot -p数据库密码 --force --all-databases 1>> /opt/backup/${dateBackup}.sql 2>> /opt/backup/${dateBackup}Debug.log"
docker cp 25efbbc261f7:/opt/backup/${dateBackup}.sql ${dir}/sql/
docker cp 25efbbc261f7:/opt/backup/${dateBackup}Debug.log ${dir}/log/
zip ${dir}/sql/${dateBackup}.zip ${dir}/sql/${dateBackup}.sql
docker exec -i 25efbbc261f7 sh -c "rm -rf /opt/backup/*"
echo "操作成功" >> ${dir}/log/Debug.log
echo -e " \n ----------------> 删除过期文件 <---------------------------" >> ${dir}/log/${dateBackup}Debug.log
# 判断文件夹数量是否大于7,防止程序意外停止,删除所有备份
dirCount=`ls -l /app/mysql/bf/backup/sql|grep "^d"|wc -l`
if [ ${dirCount} -gt 7 ]
then
# 删除超过七天的带"_"的目录
find /app/mysql/bf/backup/sql -mtime +6 -name "*.sql" -exec rm -rf {} \;
echo -e " 删除过期文件成功" >> ${dir}/log/${dateBackup}delete.log
else
echo "删除过期文件失败,文件数量小于 7 " >> ${dir}/log/${dataBackup}delete.log
fi
docker mysql 备份shell
最新推荐文章于 2023-09-14 15:40:44 发布