定时任务自动备份全站数据库与本地大模型文件

准备备份环境

开始之前,请确保你已具备以下条件:

  • 一台运行 Linux(如 Ubuntu 20.04 或 CentOS 7+)的服务器,已安装宝塔面板或直接使用终端。
  • MySQL / MariaDB 数据库,知道数据库用户名和密码。
  • 本地大模型文件(例如以 .gguf 结尾的模型文件)存放在某个目录下,比如 /data/models
  • 已安装 crontab(大多数系统自带,可执行 crontab -l 检查)。
  • 足够的磁盘空间用于存放备份文件,建议挂载单独的备份盘或使用云存储。

如果尚未安装 mysqldump,执行以下命令安装:

# Debian/Ubuntu
apt install mysql-client -y

# CentOS/RHEL
yum install mysql -y

编写备份脚本

创建一个备份脚本,同时备份数据库和大模型文件。
脚本路径建议放在 /root/backup.sh

#!/bin/bash
# 备份脚本 - 自动备份数据库与模型文件

# 配置变量
DB_NAME="你的数据库名"
DB_USER="数据库用户名"
DB_PASS="数据库密码"
MODEL_DIR="/data/models"            # 大模型文件所在目录
BACKUP_DIR="/backup"                # 备份存放目录
DATE=$(date +%Y%m%d_%H%M%S)

# 创建备份目录(如果不存在)
mkdir -p $BACKUP_DIR

# 1. 备份数据库
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/${DB_NAME}_${DATE}.sql
if [ $? -eq 0 ]; then
    echo "[OK] 数据库备份成功: ${DB_NAME}_${DATE}.sql"
else
    echo "[ERROR] 数据库备份失败"
    exit 1
fi

# 2. 备份模型文件(使用 tar 压缩,节省空间)
tar -czf $BACKUP_DIR/models_${DATE}.tar.gz -C $MODEL_DIR .
if [ $? -eq 0 ]; then
    echo "[OK] 模型文件备份成功: models_${DATE}.tar.gz"
else
    echo "[ERROR] 模型文件备份失败"
    exit 1
fi

# 3. 可选:删除30天前的备份,防止占满磁盘
find $BACKUP_DIR -name "*.sql" -mtime +30 -exec rm {} \;
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -exec rm {} \;
echo "[INFO] 清理完成"

保存脚本后赋予执行权限:

chmod +x /root/backup.sh

设置定时任务

使用 crontab -e 编辑当前用户的定时任务(注意用 root 用户,以便有权限访问所有目录)。

添加以下行,让脚本每天凌晨 3 点运行:

0 3 * * * /root/backup.sh >> /var/log/backup.log 2>&1

这行表示:每天 3:00 执行 /root/backup.sh,并将标准输出和错误输出都记录到日志文件 /var/log/backup.log,方便排查问题。

保存后,重启 crond 服务使配置生效:

systemctl restart crond   # CentOS
# 或
service cron restart      # Ubuntu

常见避坑点

1. 数据库密码明文暴露风险
脚本中直接写密码不安全。建议创建 /root/.my.cnf 文件,设置权限 600:

[client]
user=数据库用户名
password=数据库密码

然后在 mysqldump 命令中省略 -u-p,改为:

mysqldump $DB_NAME > $BACKUP_DIR/${DB_NAME}_${DATE}.sql

2. 备份文件权限问题
生成的备份文件可能被其他用户读取。可以在脚本末尾添加:

chmod 600 $BACKUP_DIR/*.sql $BACKUP_DIR/*.tar.gz

3. 磁盘空间不足
定期检查磁盘使用率,建议设置监控告警。使用 df -h 查看。

4. 模型文件过大导致压缩耗时
如果模型很大(几十GB),tar 压缩可能耗时很久,甚至撑爆临时空间。可以只打包不压缩(去掉 -z),或直接使用 rsync 同步到远程存储。

5. 定时任务未执行
检查 crontab 是否包含正确的 PATH 环境变量。建议在脚本头部添加 #!/bin/bash 并指定完整路径。查看日志:tail -f /var/log/backup.log

验证备份是否成功

手动执行一次脚本,检查备份目录:

/root/backup.sh
ls -lh /backup/

你应该看到类似 yourdb_20250321_030000.sqlmodels_20250321_030000.tar.gz 的文件。
尝试导入备份文件确认完整性:

# 恢复数据库测试(在测试库上进行)
mysql -u用户名 -p 新数据库名 < backup.sql

# 解压模型文件
tar -xzf models_*.tar.gz -C /tmp/test_models

如果解压后文件与源文件一致,说明备份完好。

最后,建议每月至少一次演练恢复流程,确保在灾难发生时能快速重建。
如果你正在处理定时任务自动备份全站数据库与本地大模型文件,建议先按本文步骤完整执行,再根据自己的环境微调;
遇到异常时优先回看避坑和高频问题部分。

分享到:
上一篇
RabbitMQ消息队列异步分流AI中转接口请求教程
下一篇
服务器带宽限速脚本防止爬虫恶意耗尽流量
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意