宝塔面板定时自动备份网站与数据库到对象存储实操记录

核心导读:记一次将服务器网站文件与MySQL数据库自动备份到第三方对象存储的配置过程。包含存储插件选择、定时任务时间避坑以及备份保留周期的个人建议。

上周朋友的一台低配云服务器因为宿主机硬件故障直接宕掉了,虽然后面厂商把磁盘救了回来,但也着实让人出了一身冷汗。我自己的几台小服务器平时挂着个人博客和几个自用小工具,数据虽然不多,但要是全都放在机器本地磁盘上,一旦机器出故障就彻底被动了。

趁着周末,我花了半个小时把宝塔里的网站目录和 MySQL 数据库统一配置了自动备份,数据会自动打包上传到远端对象存储。下面把配置思路和几处容易掉坑的细节记录一下,备忘的同时也给需要的朋友做个参考。

1. 存储桶准备与对应插件安装

对象存储市面上主流的几家都可以(腾讯云 COS、阿里云 OSS、七牛云,或者支持 S3 协议的 Cloudflare R2 等)。我这里用的是之前闲置的存储桶。

在对象存储控制台新建一个 Bucket(存储桶),权限切记设为私有读写,不要图省事开成公共读,免得数据库备份直接暴露在外网。

接着去宝塔面板的【软件商店】搜索对应的插件:

  • 阿里云选“阿里云OSS”;
  • 腾讯云选“腾讯云COS”;
  • 其他自建 MinIO 或海外 S3 兼容存储可以直接搜“S3对象存储”。

安装好插件后打开设置界面,把云厂商给的 AccessKeySecretKeyBucket 名称和所属地域节点填进去,点击保存后列出文件列表,只要能正常刷新出来,就说明认证成功了。

2. 计划任务与备份策略设置

很多小内存 VPS(比如 1G 或 2G 内存的轻量机)如果在白天跑打包,CPU 和磁盘 I/O 很容易瞬间跑满,进而引发 Web 服务 502。因此备份时间和频次需要根据机器配置和数据更新频率来规划。

我目前的配置策略参考如下:

机器内存规格备份对象执行周期与时刻远端保留份数建议原因
1 核 1G / 2GMySQL 数据库每天 03:30 执行15 份数据文件小,打包极快,凌晨低峰期执行不影响访问
1 核 1G / 2G网站文件每周一次(周日 04:30)3 份静态文件变动少,频繁全量压缩会给低配机造成沉重 I/O 压力
2 核 4G 及以上MySQL 数据库每天 02:00 / 14:00 各一次30 份机器资源充足,高频备份能最大程度降低数据丢失风险
2 核 4G 及以上网站文件隔天或每周两次(凌晨 03:00)5 份保证附件与静态代码定期快照,兼顾存储成本

在宝塔的【计划任务】中添加任务时注意:把网站备份与数据库备份拆成两个独立的计划任务,并且执行时间至少错开半小时以上,避免系统同时执行两个高压力的 tar 压缩任务。

在任务界面的“备份到”一栏,选择刚刚绑定的对象存储插件,本地保留份数建议设为 1 份或 0 份(如果磁盘空间特别吃紧直接设 0,仅保留远端)。

3. 几个容易踩坑的细节

排除无用的缓存与日志目录

很多人直接把整个网站根目录一股脑打包,结果把几十万个临时缓存文件和动辄几个 G 的 access.log 全压进去了,不仅打包极慢,还容易导致脚本超时中断。 在网站备份设置里,一定要在排除规则中填上不需要的目录,例如:
  • /runtime/
  • /cache/
  • /wp-content/cache/
  • *.log

本地磁盘必须留有足够的缓冲空间

宝塔备份到远端对象存储的逻辑是:先在服务器本地 /www/backup 目录打包生成 .tar.gz 压缩包,然后再调用 API 上传至对象存储,上传完毕后再删掉本地缓存。 如果你的网站文件有 5G,而服务器本地可用磁盘只剩下 2G,打包过程中磁盘就会被瞬间写满(100%),随之而来的就是 MySQL 宕机、系统进程异常崩溃。配置前一定要先去首页确认系统剩余磁盘空间。

定期检查任务日志与告警

任务跑完后,去计划任务右侧点击“日志”看一眼,确保看到类似 上传成功已删除本地临时文件 的提示。如果配置了宝塔的消息通道(微信/钉钉/邮箱),可以顺手把任务失败告警勾上,避免备份断了一个月自己还毫无知觉。

4. 容灾恢复的验证

“没有经过恢复验证的备份,等于没有备份。” 这是运维里的一句老话。

全部设置好之后,手动执行一次备份任务,去对象存储后台把生成的 .sql.gz 和打包文件下载回本地,解压看一看 SQL 文件是否完整、表结构是否正常,或者在本地测试环境尝试还原一下。确认文件有效之后,这套自动容灾体系才算真正落了地。

常见问题与解答 (FAQ)

Q 为什么配置了备份到对象存储,服务器本地磁盘空间还是会偶尔暴涨?

宝塔必须先在本地磁盘完成文件压缩打包,才能将其推送至对象存储,传输完成后才会释放临时空间;另外请检查计划任务中的“本地保留份数”,如果大于 0 本地也会按设定保留历史包。

Q 网站文件打包经常提示超时或上传失败怎么排查?

通常是因为网站根目录包含了海量缓存文件、大型日志或音视频媒体,导致打包耗时超出面板限制。建议在计划任务中排除缓存与日志目录,或者改用专门的跨盘同步工具处理超大媒体库。

返回运维知识库