先说个真实案例。
2024 年 6 月,某电商公司网站被黑,数据库被删。老板问技术:"有备份吧?"技术说:"有。"结果恢复的时候发现,备份文件是坏的,根本用不了。
最后花了 3 天时间 manually 恢复数据,损失 200 多万。
备份不是做了就行,得确保真的能用。
今天分享 3 种备份方案,还有灾难恢复演练流程,帮你把风险降到最低。
备份什么?先搞清楚对象
网站备份不是备份一个东西,是备份多个:
1. 网站文件
- 程序文件(PHP、JS、CSS 等)
- 图片、视频等媒体文件
- 配置文件(数据库连接、API 密钥等)
2. 数据库
- 用户数据
- 订单数据
- 内容数据(文章、产品等)
3. 服务器配置
- Nginx/Apache 配置
- 防火墙规则
- 定时任务
4. 域名和 SSL 证书
- 域名管理账号
- SSL 证书文件
很多人只备份网站文件,忘了数据库。结果恢复了网站,数据没了。
方案一:手动备份(适合小微企业)
成本:免费
难度:⭐⭐
适合:个人网站、小微企业官网
操作步骤:
1. 备份网站文件
# 通过 FTP 下载整个网站目录
# 或使用命令行打包
tar -czf website_backup_20260407.tar.gz /var/www/html
2. 备份数据库
# MySQL 数据库导出
mysqldump -u 用户名 -p 数据库名 > backup_20260407.sql
# 输入密码后,会生成 SQL 文件
3. 存储到本地
- 下载到本地电脑
- 或上传到网盘(百度网盘、Google Drive 等)
优点:
- 免费
- 简单易懂
缺点:
- 容易忘记
- 人工操作容易出错
- 恢复时间长
建议频率:每周 1 次
方案二:自动备份脚本(适合中小企业)⭐ 推荐
成本:免费 + 云服务器存储费用(约 50 元/月)
难度:⭐⭐⭐
适合:中小企业官网、电商网站
操作步骤:
1. 编写备份脚本
#!/bin/bash
# backup.sh
# 设置变量
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d_%H%M%S)
WEB_DIR="/var/www/html"
DB_NAME="数据库名"
DB_USER="用户名"
DB_PASS="密码"
# 创建备份目录
mkdir -p $BACKUP_DIR
# 备份网站文件
tar -czf $BACKUP_DIR/website_$DATE.tar.gz $WEB_DIR
# 备份数据库
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/database_$DATE.sql
# 压缩数据库
gzip $BACKUP_DIR/database_$DATE.sql
# 删除 7 天前的备份
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete
echo "备份完成:$DATE"
2. 设置定时任务
# 编辑 crontab
crontab -e
# 添加每天凌晨 2 点执行
0 2 * * * /bin/bash /root/backup.sh
3. 同步到远程服务器
# 用 rsync 同步到备份服务器
rsync -avz /backup/ user@backup_server:/remote_backup/
优点:
- 自动执行,不会忘记
- 可定制备份策略
- 成本低
缺点:
- 需要一定技术能力
- 需要额外服务器存储
建议频率:每天 1 次
方案三:云备份服务(适合中大型企业)
成本:200-1000 元/月
难度:⭐⭐
适合:中大型企业、电商平台、SaaS 服务
推荐服务:
1. 阿里云云备份
- 价格:0.15 元/GB/月
- 功能:自动备份、增量备份、一键恢复
- 优势:阿里云生态,集成度高
2. 腾讯云云备份
- 价格:0.12 元/GB/月
- 功能:自动备份、跨地域备份
- 优势:价格便宜,性能好
3. 专业备份服务(如 Backupify、CodeGuard)
- 价格:10-50 美元/月
- 功能:网站 + 数据库 + 邮件全备份
- 优势:专业备份,恢复快
优点:
- 全自动,无需维护
- 增量备份,节省空间
- 一键恢复,速度快
- 多地域存储,更安全
缺点:
- 成本较高
- 依赖第三方服务
建议频率:每天多次(每 4-6 小时)
3-2-1 备份原则
不管用哪种方案,遵循 3-2-1 原则:
3 份备份:至少保留 3 份数据副本
2 种介质:用 2 种不同的存储介质
1 个异地:至少 1 份备份存放在异地
示例:
- 本地服务器 1 份
- 云存储 1 份
- 移动硬盘 1 份(存放在公司以外)
灾难恢复演练流程
备份做了,得验证能不能用。建议每季度做一次恢复演练。
演练步骤:
1. 准备测试环境
- 准备一台测试服务器(可以和生产环境配置不同)
- 安装相同版本的程序(WordPress、dedecms 等)
2. 恢复备份
# 1. 恢复网站文件
tar -xzf website_backup_20260407.tar.gz -C /var/www/test
# 2. 恢复数据库
mysql -u 用户名 -p 数据库名 < database_backup_20260407.sql
# 3. 修改配置(数据库连接等)
# 编辑配置文件,指向测试数据库
3. 验证恢复
- 网站能否正常访问?
- 后台能否登录?
- 数据是否完整?(随机抽查文章、产品、用户数据)
- 功能是否正常?(表单提交、搜索等)
4. 记录演练结果
【演练日期】2026-04-07
【备份日期】2026-04-06
【恢复用时】35 分钟
【验证结果】
- 网站访问:✅ 正常
- 后台登录:✅ 正常
- 数据完整:✅ 正常
- 功能测试:✅ 正常
【问题记录】无
【改进建议】无
5. 优化备份策略
- 如果恢复时间太长 → 优化备份方式
- 如果数据不完整 → 检查备份内容
- 如果步骤太复杂 → 编写恢复文档
恢复时间目标(RTO)和恢复点目标(RPO)
这两个指标帮你确定备份策略:
RTO(Recovery Time Objective):能接受多长时间内恢复?
- 4 小时:需要云备份 + 一键恢复
- 24 小时:自动备份脚本够用
- 72 小时:手动备份可以接受
RPO(Recovery Point Objective):能接受丢失多少数据?
- 1 小时:需要每小时备份
- 24 小时:每天备份一次
- 7 天:每周备份一次
根据业务重要性确定 RTO 和 RPO,然后选择对应的备份方案。
备份检查清单
【备份内容】 □ 网站文件(程序 + 图片 + 配置文件) □ 数据库(用户 + 订单 + 内容数据) □ 服务器配置(Nginx+ 防火墙 + 定时任务) □ 域名和 SSL 证书 【备份策略】 □ 备份频率(每天/每周) □ 保留周期(7 天/30 天/90 天) □ 存储位置(本地 + 云端 + 异地) □ 加密存储(敏感数据加密) 【恢复验证】 □ 每季度恢复演练 □ 记录恢复用时 □ 验证数据完整性 □ 更新恢复文档 【安全管理】 □ 备份文件加密 □ 访问权限控制 □ 定期修改备份账号密码 □ 备份日志监控
最后说两句
备份这事儿,平时觉得没用,等出问题了就是救命稻草。
别等数据丢了才后悔,今天就开始做备份。
记住:备份 + 恢复演练,缺一不可。
(如果需要备份方案咨询或协助配置,可以联系我们,免费提供一次备份健康检查)