备份这件事,配置只要十分钟,但九成的人配置完就再也没看过。等到需要恢复时才发现:备份文件是空的、压缩包损坏、或者根本没在跑。所以这篇不只讲怎么配,还讲怎么验证。
一、备份什么
一个网站由三部分组成,缺一不可:
- 数据库:文章、产品、订单、用户,最核心。
- 网站文件:程序、模板、上传的图片附件。
- 配置文件:伪静态规则、nginx 配置、SSL 证书、环境变量。
很多人只备份数据库,结果恢复时发现模板被改过、图片丢了、伪静态规则没了,网站跑不起来。
二、在宝塔里怎么配
路径:计划任务 → 添加任务。推荐配置四类任务:
| 任务类型 | 频率 | 保留 |
|---|---|---|
| 备份数据库 | 每天 04:00 | 7 份 |
| 备份网站 | 每周一 04:30 | 4 份 |
| 日志切割 | 每天 00:10 | 30 天 |
| SSL 续期检查 | 每周 | — |
时间选凌晨,避开访问高峰。数据库和网站备份错开半小时,避免同时占用 IO。
三、备份存哪里
这是最关键的一步:别只存在服务器本地。服务器被入侵、磁盘损坏、误删,本地备份会一起没。
推荐三层:
- 本地磁盘(快,用于快速回滚)
- 对象存储(便宜,用于长期保留)
- 异地或另一个云账号(防账号级事故)
宝塔支持直接备份到阿里云 OSS、腾讯云 COS、七牛等。配置一次,之后自动同步。
四、保留策略怎么定
常用的"三二一"原则:三份副本、两种介质、一份异地。落到具体数量:
日备份保留 7 份(覆盖一周),周备份保留 4 份(覆盖一月),月备份保留 3 份(覆盖一季度)。总共十四个文件,对多数企业站足够。
保留太多会占满磁盘,反而引发新问题。宝塔的备份任务里可以设置保留份数,按上面的数量填。
五、日志清理别忘
网站访问日志、Nginx 错误日志、PHP 慢日志,一个月能积累几个 G。磁盘写满会导致 MySQL 无法写入,网站直接打不开。
配置日志切割任务,保留 30 天。如果要做流量分析,可以保留 90 天,但要定期归档到对象存储。
六、必须做的恢复演练
备份没验证过,等于没有备份。每季度做一次演练:
- 在测试目录新建一个站点。
- 下载最近一次数据库和网站备份。
- 导入数据库、解压文件、改配置里的数据库连接。
- 访问站点,确认首页、内页、图片、后台都正常。
整个过程记录耗时。如果超过一小时,说明恢复流程需要优化——真出事时,一小时可能就是业务停摆的极限。
七、三个容易踩的坑
- 备份文件放在网站根目录。黑客可以直接下载。备份要放在 web 目录之外。
- 数据库备份用了不完整的导出。大表导出超时被截断,恢复时缺数据。备份后检查文件大小是否合理。
- 没有备份证书和配置。恢复后 HTTPS 失效,需要重新申请。
备份失败的三种常见原因
磁盘满、数据库账号权限变更、对象存储密钥过期。三种都会让任务"执行成功但文件为空",所以必须加一条校验:备份完成后检查文件大小是否在合理区间。
低于阈值的直接告警,别等到需要恢复时才发现。
备份任务的校验方式
磁盘满、数据库账号权限变更、对象存储密钥过期。三种都会让任务“执行成功但文件为空”,所以必须加一条校验:备份完成后检查文件大小是否在合理区间,低于阈值直接告警。
别等到需要恢复时才发现备份是空的。每周抽一个备份文件,实际恢复一次到测试目录。
日志和备份要分开存,别让备份把磁盘写满。给日志设轮转,给备份设保留份数,每周检查一次任务是否真的执行。
日志设轮转、备份设保留份数,别让备份把磁盘写满。
日志设轮转,备份设保留份数。
常见问题
备份会影响网站速度吗
会有一点,主要占用磁盘 IO。放在凌晨影响可以忽略。大站建议用从库备份或快照。
云服务器快照能代替备份吗
不能完全代替。快照是整盘级别,恢复粒度粗,且通常按容量收费。数据库级别的逻辑备份仍然需要。
多久备份一次合适
看数据变化频率。每天更新的站每天备份;纯展示站每周也够。但数据库建议至少每天一次。
备份是运维的底线,其他安全设置见宝塔面板安全设置。