网站文件和数据库备份必须分设两个独立任务,因宝塔底层模块隔离,各自生成独立压缩包;FTP配置需注意地址不加协议、路径不带斜杠、密码避特殊字符;Shell上传需错开时间并转义日期;高频备份易致服务器卡死,建议数据库每日1次、文件每2天1次;务必校准系统时区。

不能只设一个任务就搞定整站备份——网站文件和数据库必须分两个独立计划任务配置,否则漏备份是常态。
为什么“备份网站”和“备份数据库”必须分开建任务
宝塔面板底层逻辑上把这两类数据完全隔离处理:backup_website 和 backup_database 是两个互不感知的执行模块。即使你把两个任务设成同一时间、同存到FTP,它们也各自生成独立压缩包(site_*.tar.gz 和 database_*.sql.gz),不会合并,也不会互相等待。常见错误是只建了“备份网站”,结果数据库没动过,恢复时发现用户表全丢了。
- 数据库下拉列表为空?先确认该库确实存在且非空(空库不显示)
- 勾选多个数据库时,每个都会生成单独的 .sql.gz 文件,不是打包进一个文件
- “保留份数”对两者分别生效,比如都设3份,实际会占用6个备份文件的空间
FTP存储空间配置失败的典型表现和修复点
填完FTP地址、用户名、密码后,点击设置保存,页面卡在“正在获取文件列表”不动——这不是网络延迟,90% 是凭据或路径写错了。
- FTP地址只填
192.168.1.100或ftp.example.com,不要加ftp://或端口号 - FTP路径填相对路径,例如
backup,不是/backup或backup/(末尾斜杠会导致失败) - 密码含
$、&、@等特殊字符?换用不含特殊字符的密码再试 - 测试前务必用 FileZilla 本地连一次,确认被动模式(PASV)已开启、端口 21/22 通、目录可写
用Shell脚本补全“自动上传”环节(尤其COS/OSS/阿里云盘)
宝塔的“备份网站”任务本身不支持上传动作;它只负责生成本地压缩包。想自动推送到腾讯云COS这类对象存储,必须额外加一个Shell任务,调用插件提供的命令行工具。
- 先确保已安装并配置好对应插件(如
cos插件),且测试连接成功 - 新增Shell任务,内容类似:
/www/server/panel/plugin/cos/cos.pl upload /www/backup/site/example.com_$(date +\%Y\%m\%d).tar.gz /backup/
- 执行周期要比网站备份任务晚至少5分钟(例如网站设02:00,上传设02:05),否则文件还没生成就去传
- 注意路径中日期格式用
\%Y\%m\%d(反斜杠转义),否则date命令会报错
高频备份导致服务器卡死的真实原因
设成“每小时备份数据库”看起来很安全,但实际可能让小内存(≤2GB)服务器在凌晨集中 IO 时直接无响应——因为 mysqldump 进程会锁表、占内存,而宝塔默认未限制其资源使用。
- 生产环境建议数据库备份频率 ≤ 每天1次,网站文件 ≤ 每2天1次
- 避免所有备份任务集中在同一分钟触发(比如都设02:00),错开5–10分钟更稳妥
- 保留份数别盲目设高:单站超300MB还留30份,磁盘撑不过一周
- 别碰
/www/server/cron/crontab.py—— 宝塔靠它调度,改崩了整个计划任务就停摆
最易被忽略的一点:所有任务依赖服务器本地系统时间。如果时区设错(比如显示UTC而非CST),备份会在你完全不知情的时间静默执行或彻底跳过。进计划任务页第一眼先核对右上角时间是否准确。










