1.创建脚本文件
backup.sh
#!/bin/bash
CONTAINER_NAME="tools-mysql" # 替换为你的 MySQL 容器名称
DB_NAME="small-tools" # 数据库名称
DB_PASSWORD="tools@0319" # 数据库密码
BACKUP_PATH="/home/project/tools/dataBackup" # 备份存储路径
TIMESTAMP=$(date +"%Y%m%d_%H%M%S") # 当前时间戳
# 创建备份目录(如果不存在)
mkdir -p $BACKUP_PATH
# 开始备份
#/usr/bin/docker exec -it $CONTAINER_NAME /usr/bin/mysqldump -uroot -p$DB_PASSWORD $DB_NAME >$BACKUP_PATH/$DB_NAME-$TIMESTAMP.sql;
#修正
/usr/bin/docker exec $CONTAINER_NAME mysqldump -uroot -p$DB_PASSWORD $DB_NAME >$BACKUP_PATH/$DB_NAME-$TIMESTAMP.sql;
# 找到并删除7天前的备份文件
find "$BACKUP_PATH" -type f -mtime +7 -name "*.sql" -exec rm -f {} \;
2.测试能否运行
# sh 你的脚本文件路径
sh /home/project/tools/dataBackup/backup.sh
不报错且目录生成了sql文件就是成功了(废话)
3.添加定时器触发
直接敲命令
crontab -e
就会来到定时任务的编辑器,在里面添加一个定时任务,与vim编辑器操作一样
:wq保存退出就OK了
等待定时器触发,可以先设置每分钟执行一次做测试,示例:* * * * * sh /home/project/tools/dataBackup/backup.sh
遇到的坑
1.报错$’\r’: 未找到命令
原因:命令直接从windows 复制过来导致的,Window的换行符是CRLF格式的。
解决:使用工具转换为unix版本,我使用的是nodepad++,转换了原封不动的传回Linux中。
或者使用dos2unix工具
yum install dos2unix
dos2unix xxx.sh
搞定。