可运行的数据库自动备份脚本已给出:以#!/bin/bash开头,通过~/.my.cnf安全存密,用gzip压缩并带时间戳命名,每日2点cron执行,自动清理7天前备份。

直接用 Shell 脚本 + cron 就能搭起可靠的数据库自动备份,不用装额外工具,关键在脚本结构清晰、密码不裸露、备份可追溯。
写一个可运行的备份脚本
把下面内容保存为 /backup/db_backup.sh(路径可自定):
# !/bin/bash
DB_NAME="myapp"
BACKUP_DIR="/backup/db"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
mkdir -p $BACKUP_DIR
mysqldump $DB_NAME | gzip > $BACKUP_DIR/${DB_NAME}_$TIMESTAMP.sql.gz
if [ $? -eq 0 ]; then
echo "✅ 备份完成: ${DB_NAME}_$TIMESTAMP.sql.gz"
else
echo "❌ mysqldump 执行失败"
exit 1
fi
注意几点:
- 脚本开头必须是 #!/bin/bash,否则执行会报错
- 不要在脚本里写明文密码——改用 ~/.my.cnf 存凭证(见下节)
- 用 gzip 压缩能省 70%+ 空间,且不影响恢复
- 文件名含时间戳,避免覆盖,也方便人工识别
安全存密码:用 .my.cnf 替代脚本明文
在 root 用户家目录下创建 ~/.my.cnf:
[client]
user = root
password = your_real_password
然后执行:
chmod 600 ~/.my.cnf
这样 mysqldump 就能自动读取凭证,脚本里只需写 mysqldump $DB_NAME,既简洁又避免泄露风险。
设置定时任务(每天凌晨2点执行)
运行:
crontab -e
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
添加这一行:
0 2 * * * /backup/db_backup.sh >> /backup/db_backup.log 2>&1
说明:
- 0 2 * * * 表示每天 2:00 执行
- >> /backup/db_backup.log 2>&1 把成功/失败日志都记下来,排查问题时直接看这个文件就行
- 确保脚本路径、目录权限正确(如 /backup/db 对运行用户可写)
加个自动清理,防止磁盘塞满
在脚本末尾追加清理逻辑:
# 保留最近7天的备份
find $BACKUP_DIR -name "${DB_NAME}_*.sql.gz" -mtime +7 -delete
或更稳妥一点,先列出再删:
find $BACKUP_DIR -name "${DB_NAME}_*.sql.gz" -mtime +7 -print
find $BACKUP_DIR -name "${DB_NAME}_*.sql.gz" -mtime +7 -delete
这样既能确认删的是哪些文件,又不会误删当天或前一天的备份。

















