
文章目录
结论先行:WordPress 备份要做 3 份副本(1 份生产 + 2 份异地),存 2 种介质,1 份离线/不可变;用脚本每日全量+binlog 增量,保留 30 天;每季度做一次真实恢复演练,能在 30 分钟内拉起站点即算做对。
备份什么:文件与数据库的完整清单
WordPress 站点由两类数据组成:文件系统与 MySQL 数据库。漏掉任一部分,恢复后都会出现白屏或内容缺失。
文件系统范围
必须打包的路径包括:WordPress 核心目录(/var/www/html 或站点根目录)、wp-content/uploads(用户上传媒体)、wp-content/themes、wp-content/plugins、wp-config.php、.htaccess(Apache)或 Nginx 的 server 块配置(通常在 /etc/nginx/conf.d/)。2026 年主流环境已普遍使用 PHP 8.2+ 与 MariaDB 10.11/MySQL 8.0,wp-config.php 中的 DB_CHARSET 多为 utf8mb4,导出时要保持一致。
数据库导出
使用 mysqldump 导出,排除缓存表(如 wp_options 中的 transient 可后续清理,但导出时保留全表更安全)。典型命令如下:
mysqldump -u root -p --single-transaction --quick --routines --triggers
--default-character-set=utf8mb4 wordpress_db
> /backup/wp-db-$(date +%Y%m%d-%H%M).sql
tar -czf /backup/wp-files-$(date +%Y%m%d-%H%M).tar.gz
-C /var/www html--single-transaction 保证 InnoDB 一致性且不锁表;--routines 带上存储过程。若站点开启了 WordPress 官方备份建议中提到的对象缓存,还需单独记录 Redis 配置,但缓存本身不必备份。
获取报价
邮箱 + 需求 + 预算区间,24 小时内回复报价。
异地与多份副本:3-2-1 原则落地
3-2-1 原则指:3 份数据副本、2 种不同存储介质、1 份异地/离线。对 WordPress 而言,生产服务器上的 tar 包算第 1 份;同区另一台挂载 NFS 的机器算第 2 份;同步到对象存储(如 S3 兼容存储)并开启版本控制算第 3 份。
介质与异地组合
常见组合:本地磁盘 + 异地机房 rsync + 对象存储。2026 年不少团队使用 rclone 同步到 S3 兼容桶,并开启 Object Lock(WORM)防止误删。示例:
rclone sync /backup remote:wp-backup/site-a
--s3-chunk-size=64M --transfers=8
--backup-dir=remote:wp-backup/archive/$(date +%Y%m%d)
--log-file=/var/log/rclone-wp.log验证是否做对:在异地执行 rclone ls remote:wp-backup/site-a | tail 能看到当日文件,且对象存储控制台显示对象数为 3 份以上。
自动化与保留周期:用 cron 与脚本管理
人工备份必然遗漏。用 cron 每日触发脚本,并按保留策略清理旧包。
实施流程
- 编写备份脚本
/usr/local/bin/wp-backup.sh,内含 mysqldump 与 tar 逻辑。 - 在 crontab 中设置每日 02:00 执行:
0 2 * * * /usr/local/bin/wp-backup.sh。 - 脚本末尾调用 rclone 同步到异地。
- 用
find /backup -name 'wp-*' -mtime +30 -delete清理超过 30 天的本地包。 - 对象存储侧配置生命周期规则,30 天后转低频,90 天后删除。
- 将执行结果写入
/var/log/wp-backup-status.log并接入监控告警。
踩坑:cron 环境变量缺失会导致 mysqldump 找不到,脚本内要写全路径 /usr/bin/mysqldump;另外 % 在 crontab 里需转义为 %。若同步失败,先查 /var/log/rclone-wp.log,回退方法是手动执行脚本并观察退出码。
定期恢复演练:验证备份真的能用
备份没演练等于没备份。每季度抽一台干净 VPS 做全流程恢复。
验证步骤
- 准备一台与生产同版本 PHP/MySQL 的空机器,安装相同 WordPress 版本(2026 年多为 6.7+)。
- 拉取最近一次备份:
rclone copy remote:wp-backup/site-a/wp-db-20260301.sql /restore/。 - 导入数据库:
mysql -u root -p wordpress_test < /restore/wp-db-20260301.sql。 - 解压文件到 web 根:
tar -xzf wp-files-20260301.tar.gz -C /var/www/。 - 修改
wp-config.php中DB_NAME、DB_USER、DB_PASSWORD指向测试库。 - 启动服务并访问首页,检查文章、图片、登录后台是否正常。
常见失败:导入后首页跳转原域名,需在 wp_options 的 siteurl/home 用 SQL 更新,或用 WP-CLI:wp option update siteurl 'https://new.test'。若图片 404,检查 uploads 权限是否为 www-data 可读。回退:演练环境不影响生产,直接销毁即可。
对于需要长期维护的站点,可以将其纳入 WordPress 网站代维与运维 流程,由专人执行周期性演练。若站点刚经历过迁移,也可参考 WordPress 换服务器迁移:不停机搬家步骤 中的校验环节补充到演练清单。
常见问题

备份包很大,如何减少体积?
排除 wp-content/cache/、node_modules 与旧日志;数据库导出前用 WordPress 数据库膨胀:清理修订、垃圾数据与 autoload 的方法删修订再 dump,可显著缩小 SQL 文件。
恢复后插件报错怎么办?
先禁用所有插件(wp plugin deactivate --all),再逐个启用定位;若因 PHP 版本差异,对照 升级到 PHP 8.2:兼容性排查与常见报错 处理。
如何判断备份策略是否合格?
能在 30 分钟内在干净环境还原站点并正常发文、传图,且最近 3 份副本分布在不同介质,即为合格。
可执行动作清单
- 今天:编写并测试
wp-backup.sh,确认 mysqldump 与 tar 路径正确。 - 本周:配置 cron 与 rclone 异地同步,保留 30 天本地、90 天对象存储。
- 本月:在干净 VPS 完成一次恢复演练并记录耗时。
- 下季度:轮换一次离线副本(如导出到外部硬盘),验证可读性。
- 长期:将备份状态日志接入告警,失败立即通知负责人。
想让备份与演练常态化?了解我们的 WordPress 网站代维与运维 服务,把恢复时间压到最短。
