独立站备份策略:全量增量、频率、存储位置与恢复演练

独立站备份遵循3-2-1原则:3份副本、2种介质、1份异地。频率建议:数据库每4小时增量、每日全量;文件每日rsync增量、每周全量。存储三层:服务器本地...

独立站备份:3-2-1原则与恢复演练Backup strategy: 3-2-1 rule and restore drills 没恢复过的备份等于没有备份 —— 备份策略一半是怎么存,一半是怎么恢复A backup you never restored is no backup at all — half the job is recovery 副本Copy 位置Location 频率Cadence 1 本地1. Local 服务器磁盘另一分区Another partition on server 每4小时增量 · 每日全量4h incremental, daily full 2 异地2. Offsite 异地对象存储 S3/OSSObject storage S3/OSS 每日同步 · 保留30天Daily sync, keep 30 days 3 冷备3. Cold Glacier/归档 · 季度全量Glacier archive, quarterly 反直觉判断:备份只存在同一台服务器上,等于没有备份 —— 服务器被黑时备份会一起被加密Counter-intuitive: on-server backups are useless — ransomware encrypts them too 3-2-1原则:3份副本、2种介质、1份异地,缺一不可3 copies, 2 media, 1 offsite — non-negotiable 红线:每季度必须做一次恢复演练,没恢复过的备份不算数Red line: quarterly restore drill — untested backups are not backups 真实事故里,超过40%的备份恢复失败是因为备份文件损坏或密码丢失40%+ of restores fail due to corrupt archives or lost keys 保留策略:每日30天 · 每周12周 · 每月12个月 · 每年3年Retention: 30 daily · 12 weekly · 12 monthly · 3 yearly 数据库用mysqldump加binlog,文件用rsync增量,恢复时间目标见灾难恢复一文mysqldump + binlog for DB; rsync incremental for files
备份3-2-1策略:本地、异地对象存储、冷备归档三层副本

独立站备份策略:全量增量、频率、存储位置与恢复演练

结论先行:独立站备份遵循3-2-1原则:3份副本、2种介质、1份异地。频率建议:数据库每4小时增量、每日全量;文件每日rsync增量、每周全量。存储三层:服务器本地另一分区、异地对象存储(S3/OSS)、Glacier归档冷备。保留策略:每日30天、每周12周、每月12个月、每年3年。反直觉的结论是:没恢复过的备份等于没有备份,真实事故里超过40%的备份恢复失败,原因是备份文件损坏或密钥丢失,每季度必须做一次恢复演练。

一、备份什么:数据库和文件要分开备

独立站备份要备两类东西:数据库和文件。数据库是WordPress的wp_posts、wp_options、wp_users这些内容,文件是wp-content/uploads里的图片、主题、插件代码。两类东西的变化频率和备份方式完全不同,混在一起备会出问题。

数据库用mysqldump或者wp-cli导出,每次导出要带–single-transaction参数,避免锁表影响线上。文件用rsync增量同步,只同步变化的部分,不要每次全量拷贝——一个10GB的wp-content目录,全量拷贝一次要十几分钟,增量同步只要几秒。

备份对象 变化频率 推荐工具 备份方式
MySQL数据库 每小时可能变化 mysqldump或xtrabackup 每4小时增量binlog,每日全量dump
wp-content/uploads 每周新增图片 rsync 每日增量同步
主题和插件代码 每月改几次 git或rsync 版本控制,每月全量
wp-config.php 极少变化 单独存密码管理器 变更即备份
nginx/站点配置 每月改几次 git管理 变更即备份

场景示例:一个用WordPress的工业装备出海站,每天新增3到5个询盘和2到3张产品图片。数据库用脚本每4小时导一次,文件用rsync每天凌晨3点增量同步到异地对象存储。一周下来数据库备份占约500MB,文件增量备份占约200MB,总存储成本每月不到20元。这个配置比装任何付费备份插件都可靠。

备份脚本怎么写,和环形山技术栈里的自动化运维思路一致:不依赖GUI插件,用cron加脚本,失败了发告警。

二、频率与保留策略:不是备份越频繁越好

反直觉的判断:备份不是越频繁越好。备份太频繁会占用大量存储和IO,而且恢复时反而更乱——你面对一堆差不多的备份,不知道哪个是干净的。合理的频率是按业务变化速度定:数据库4小时一备,因为询盘随时可能来;文件每日一备,因为图片上传不频繁。

保留策略用祖父-父-子三层:每日备份保留30天,每周备份保留12周,每月备份保留12个月,每年备份保留3年。这样你既能恢复到昨天误删的文章,也能恢复到半年前被黑前的干净版本。

备份类型 频率 保留时长 存储位置 用途
数据库全量 每日凌晨3点 30天 异地对象存储 日常误删恢复
数据库增量binlog 每4小时 7天 本地+异地 精确到分钟的恢复
文件全量 每周日凌晨 12周 异地对象存储 周级回滚
文件增量rsync 每日凌晨 30天 异地对象存储 日级回滚
月度归档 每月1号 12个月 Glacier冷备 月度合规与长期
年度归档 每年1月 3年 Glacier冷备 年度审计与历史

场景示例:一个出海站3月15日下午发现数据库被注入了恶意内容。有了binlog增量备份,可以把数据库恢复到3月15日中午12点——攻击发生前的状态,只丢半天的询盘记录。如果只有每日全量备份,只能恢复到3月15日凌晨3点,丢掉一整天的询盘。这就是4小时增量和每日全量的差别。

三、存储位置:3-2-1原则,异地是硬要求

3-2-1备份原则的意思是:重要数据保留3份副本,存在2种不同介质上,其中1份放在异地。这不是理论,是从无数次勒索软件事件里总结出来的。真实事故里,攻击者加密服务器的同时也会加密本地备份——因为备份和网站在同一台机器上。

三层存储怎么选:第一层本地备份,放在服务器另一个磁盘分区,恢复最快但抗风险能力最差;第二层异地对象存储,用AWS S3或阿里云OSS,跨可用区冗余,不怕单台服务器挂掉;第三层冷备归档,用S3 Glacier或OSS归档,便宜但恢复慢,用于年度合规和长期留存。

存储层 位置 恢复速度 成本 主要用途
本地磁盘备份 服务器另一分区 秒级 0元 日常快速恢复
异地对象存储 S3/OSS跨区 分钟级 约0.02元/GB/月 主备份,每日同步
冷备归档 Glacier/OSS归档 小时到天级 约0.005元/GB/月 年度合规与长期
离线介质 本地硬盘/磁带 物理取盘 一次性硬盘成本 极端勒索场景兜底

反直觉提醒:备份文件不要放在web目录下。很多人把备份放在wp-content/backup/,以为多了一份副本,实际上攻击者扫到这个路径直接下载,数据库名表名全泄露。正确做法是备份文件放到web根目录之外,或者备份完自动上传到对象存储并删除本地副本。被黑之后的清理流程见网站被黑之后。

和CDN全球加速配合时注意:CDN缓存不是备份,它只是把你的静态内容复制到边缘节点,源站挂了CDN缓存也会过期。不要把CDN缓存当成灾难恢复方案。

四、恢复演练:每季度一次,验证备份真的能用

备份策略里最被忽略的一环是恢复演练。很多企业备份脚本跑了一年,从来没恢复过一次,真到出事时才发现备份文件损坏、解压密码忘了、或者恢复流程根本跑不通。真实事故里,超过40%的备份恢复失败,原因都在这三类。

恢复演练怎么做:每季度选一个维护窗口,从异地对象存储拉一份最近的备份,恢复到一台全新的测试环境,跑通”恢复文件、导入数据库、配置nginx、访问站点、验证询盘表单提交”全流程。整个过程计时,记录实际RTO(恢复时间目标)和RPO(数据丢失量)。具体RTO/RPO怎么定见独立站灾难恢复与RTO/RPO定义。

演练步骤 动作 验收标准 常见失败点
1 拉取备份 从S3下载最近全量+增量 5分钟内下载完成 对象存储凭证过期
2 解压验证 tar -tzf列出文件清单 文件数完整无损坏 gzip包损坏,没校验
3 恢复文件 解压到测试环境web目录 权限正确755/644 权限丢失,站点白屏
4 导入数据库 mysql < backup.sql 表数和线上一致 字符集错误,中文乱码
5 配置nginx 复制配置改端口 域名能访问 伪静态规则丢失
6 功能验证 走一遍询盘表单提交 邮件收到,CRM落库 SMTP密码写死在配置里

场景示例:一个团队半年没做恢复演练,服务器硬盘坏了才去拉异地备份,结果解压到一半报错——原来三个月前备份脚本里的gzip参数写错了,后面两个月的备份全是损坏文件。最后只能从更早的干净备份恢复,丢了两个月的内容。这种事故只要每季度跑一次恢复演练就能提前发现。

备份监控怎么配,见站点监控与告警:备份任务失败要发企业微信告警,备份文件大小突降要告警,备份年龄超过24小时要告警。日常维护清单见官网维护期每月六件事。

FAQ 常见问题

独立站备份用什么插件,UpdraftPlus够吗?
UpdraftPlus免费版够用,它支持数据库和文件分开备份,能直接同步到S3、Dropbox、Google Drive。但插件方式有两个局限:一是备份时占用Web进程,高峰期会拖慢站点;二是备份文件如果存在web目录下,会被扫描器下载。更稳的做法是用服务器层面的mysqldump加rsync脚本,cron定时跑,备份完成后自动上传到异地对象存储并删除本地副本。两种方式可以并行,插件用于快速恢复,脚本用于主备份。
备份频率定多少合适,需要每小时备一次吗?
不需要。B2B独立站的询盘和内容变化频率没那么高。推荐数据库每4小时增量binlog加每日全量dump,文件每日rsync增量加每周全量。这样日常恢复最多丢4小时数据,极端情况下用binlog能精确到分钟。如果你是电商站,订单每分钟都在变,才需要考虑每小时一备。备份太频繁会占用大量存储和IO,恢复时反而不知道选哪份。
3-2-1备份原则具体怎么落地?
三份副本:第一份在服务器本地另一磁盘分区,恢复最快;第二份在异地对象存储如S3或阿里云OSS,跨可用区;第三份在冷备归档如Glacier,长期留存。两种介质:本地磁盘和云存储算两种。一份异地:云存储必须和源站不在同一个机房或云厂商,最好跨可用区。三层都要有,缺一不可。勒索软件事件里,只有本地备份的站基本全灭,因为备份文件会被一起加密。
恢复演练怎么做,多长时间做一次?
每季度一次。流程是:从异地对象存储拉最近一份全量备份,在一台全新的测试环境恢复,走完整流程——解压文件、导入数据库、配nginx、访问站点、提交一条测试询盘邮件、确认CRM收到。整个过程计时,记录实际恢复时间和数据丢失量。真实事故里超过40%的备份恢复失败,原因是备份文件损坏或密钥丢失,只有实际恢复过一次才能发现这些问题。
备份文件要不要加密,怎么存密钥?
必须加密,尤其是数据库备份——里面有询盘、客户信息、wp-config.php里的数据库密码。用gpg或openssl加密备份文件,密码存在密码管理器里,不要写在备份脚本里。密钥丢失的后果和没有备份一样:备份文件解压不开。建议密钥用两把:一把日常用,一把归档用,归档密钥打印一份纸质版锁在抽屉里。对象存储侧再开服务端加密,双保险。
备份脚本失败了怎么知道,怎么告警?
备份任务本身要被监控。三个告警规则:第一,备份任务退出码非0就发告警;第二,备份文件大小比前一天突降30%以上告警,可能是数据库连接失败导致空备份;第三,最新备份年龄超过24小时告警,说明脚本没跑。告警渠道用企业微信或邮件,不要只写本地日志——本地日志在服务器挂掉时也看不到。监控体系怎么搭见站点监控与告警一文。

写在最后

备份这件事,最忌讳的是”装了插件就以为完事了”。插件每天跑,备份文件每天生成,但从没恢复过一次,真出事时才发现备份损坏、密码丢失、流程跑不通。备份策略一半是怎么存,另一半是怎么恢复——后者比前者重要十倍。

落地三步:第一,按3-2-1原则把三层备份搭起来,本地、异地对象存储、冷备归档各一份;第二,定好频率和保留策略,数据库4小时增量加每日全量,文件每日增量,保留30天到3年;第三,每季度跑一次恢复演练,在测试环境完整走通恢复流程,记录实际RTO和RPO。这三步做完,你才敢说自己有备份。

一句可以记住的话:没恢复过的备份等于没有备份——备份脚本跑一年不如一次完整恢复演练,真实事故里40%的备份在关键时刻打不开。

环形山
环形山 环形山专家

机构官方 · 环形山 Crater

环形山(Crater)是一家专注 WordPress 独立站开发 + Google SEO + GEO 全域增长的出海服务公司,服务智能硬件、工业装备、SaaS、新能源等赛道。

产品能力方法论白皮书行业报告
965篇分享
78篇知识库