VPS 备份三件套:快照 + 异地 + 自动化,附 WordPress 全套实操命令(2026实录)

先说一个反常识的事实:你的 VPS 大概率不会因为商家宕机丢数据,但会因为你自己一条手滑的 rm 命令、一次没打补丁的漏洞、或者商家一纸封户通知,让几个月的工作一夜归零。这三种死法对应三种防御,缺一种就多一种裸奔。这篇文章按「快照 → 异地备份 → 自动化」三件套给你完整方案,所有命令都来自我们 10 月底对自己 WordPress 站点的真实备份演练,直接照抄可用。

为什么快照不能替代备份

很多人以为在商家面板点个快照就万事大吉,这是备份认知里最大的坑。先看三件套各自防什么:

层级 防什么 防不了什么 成本
快照 误操作、升级失败、配置改崩——需要「回到十分钟前」的场景 商家跑路、账户被封、机房级故障——快照和主机同命 通常按存储计费(下文有实价)
异地备份 以上全部——数据离开商家,拿到你自己手里 懒——手动备份坚持不了三个月 几十 GB 硬盘空间
自动化 人性——把「记得备份」变成「不用记得」 自动化本身出 bug 没人发现 一次配置时间

记住一句话:快照是后悔药,异地备份是保命符,自动化是让前两者真正发生的机制。三件套少一件,等于那一种死法你没设防。

第一件:快照——大动作前必拍

快照是整块磁盘某一时刻的完整镜像,恢复就是整盘回滚。它的正确用法不是日常备份,而是在每次大动作前手动拍一个:升级 PHP 前快照、更换主题前快照、迁移网站前快照。改坏了?一键回滚,十分钟前世界恢复原样。

收费方面拿数据最全的 Vultr 举例(官网定价页与文档确认):手动快照按存储计 $0.05/GB/月(按压缩后大小算),一台 25GB 盘的机器长期挂一个快照大约 $1.25/月;如果开启自动备份功能,则是基础月费加收 20%($6/月的机器变成 $7.2/月)。Vultr 官网传送门 → 各家定价策略类似,都不贵,但别把快照当免费午餐无限拍,拍完确认没用了就删。

快照的致命局限必须说透:它存在商家的存储池里,商家跑路、你的账户被封、机房整体故障时,快照和你一起消失。所以它只配当三件套的第一件,不能当唯一一件。关于选商家时怎么评估靠谱程度,另见我们的 Vultr 深度测评。

第二件:异地备份——WordPress 全套实操命令

异地备份的核心是:数据要离开这台 VPS,落到你自己手里(本地电脑、家里 NAS、另一家的对象存储都行)。WordPress 站需要备份的东西就两样:数据库(全部文章和设置)+ 文件目录(主题、插件、上传的图片)。下面是我们真实执行过的完整流程,以 Ubuntu + MySQL 为例,10 分钟内可完成:

第一步:导出数据库(2 分钟)

mysqldump --single-transaction -u 数据库用户 -p 数据库名 | gzip > /tmp/db_backup.sql.gz

关键参数 --single-transaction:备份期间不锁表,网站照常访问,导出的又是一致性快照。数据库名和用户名在 WordPress 根目录的 wp-config.php 里能查到。我们 362MB 的站点,数据库导出压缩后只有 2.9MB——文本数据压缩率极高,别担心体积。

第二步:打包文件目录(3 分钟)

tar -czf /tmp/wp_files.tar.gz /var/www/wordpress

把整个 WordPress 目录(含 wp-content 里的全部图片)打成一个包。我们这个站 17,687 个文件,最终压缩包 104MB。如果你只想要核心数据,单独打包 wp-content 目录也行,主题插件都能重装,图片丢了才是真疼。

第三步:下载到本地并校验(5 分钟)

scp root@你的服务器IP:/tmp/db_backup.sql.gz D:\backup\(Windows 10+ 自带 scp 命令)

下载完别急着关窗口——不校验的备份等于没备份。两步验证:

  • 传输完整性:服务器上 md5sum 文件名,本地 certutil -hashfile 文件名 MD5,两边哈希一致才算数;
  • 包本身可解:gzip -t 和 tar -tzf 测试能否正常解开,数据库包还要确认尾部有 Dump completed 标记——这是导出完整跑完的官方指纹,没有它就是中途断了。

这套流程我们实测全程 12 分钟,服务器全程无感(测试方法见 VPS 性能测试教程 的工具)。备份包记得妥善存放——里面含 wp-config.php(有数据库密码),别传公开网盘、别发任何人。

第三件:自动化——让备份自己发生

手动备份的结局可以预言:前两周勤勤恳恳,第三周开始「这周再说」,某天想起来的时候正是出事的时候。所以第三件套是把上面的流程交给机器:

服务器端:cron 定时任务

crontab -e 添加一行(每周日凌晨 3 点自动备份数据库并清理 7 天前的旧包):

0 3 * * 0 mysqldump --single-transaction -u用户 -p密码 数据库名 | gzip > /opt/backups/db_$(date +\%F).sql.gz && find /opt/backups -mtime +7 -delete

本地端:定时拉取 + 轮换保留

服务器上的备份依然在商家手里,所以本地再设一个每周定时任务(Windows 任务计划 / Mac Launchd),用 scp 把最新备份拉到本地,保留最近 4 份、自动删除更旧的——既防丢失又不用操心磁盘膨胀。我们把整套流程做成了每周二自动执行的定时任务,跑了一个月零失败,这是普通站长用零成本就能达到的企业级方案。

自动化最容易被忽略的一环:备份结果要有人看

自动化的最大风险是「以为在备份,其实早就静默失败了」(磁盘满了、密码改了、路径错了)。两个廉价对策:定时任务完成后给自己发一封邮件或推送;每周顺手看一眼备份目录的文件日期和大小。磁盘余量也要看——我们演练时特意检查过,VPS 磁盘用到 76% 时就该警惕,90% 以上时宁可先清理再备份,别把服务器塞死。

恢复演练:备份的意义在恢复

最后一步 90% 的人从没做过:拿一份备份,真的把站恢复一遍。命令其实就四条:

  • 建库:mysql -u用户 -p -e "CREATE DATABASE 新库名"
  • 导入:gunzip < db_backup.sql.gz | mysql -u用户 -p 新库名
  • 解包:tar -xzf wp_files.tar.gz -C /var/www/
  • 改 wp-config.php 里的数据库名为新库名,重启,完事

建议每半年在测试环境演练一次。没演练过的恢复方案只是理论——真出事时你不会想第一次实践就是灾难现场。安全类事故(被黑、挂码)恢复后的排查思路,参考我们的 PHP2Shell 应急指南 的入侵排查一节。

备份频率怎么定

你的站 快照 异地备份 保留
日更的内容站、电商 每次改版前 每天 最近 7 份
周更的博客、企业站(大多数人的情况) 每次大动作前 每周 最近 4 份
几乎不动的展示页 改的时候拍 每月 最近 2 份

常见问题

Q:商家自带的每日备份服务要买吗?

便宜可以买,但它属于「商家侧冗余」,不是异地备份——商家出事它跟着出事。它最大的价值是恢复省事(面板一键),适合当第四件补充,不能替代你把数据拿到自己手里。

Q:网站被黑了,恢复旧备份会不会把后门也恢复回来?

会。恢复到被黑之前的备份点,然后把所有密码(数据库、后台、SSH)全部改掉,并按应急指南排查可疑文件。备份只解决数据丢失,不解决入侵根因。

Q:备份文件放哪里最合适?

至少两个位置:本地电脑(或 NAS)+ 一个不同商家的存储(如另一家云的对象存储)。「同一台电脑 + 同一个网盘账号」算一个位置。

Q:虚拟主机(共享主机)怎么办?

用 cPanel/Plesk 自带的备份向导,或 UpdraftPlus 这类 WordPress 插件定时备份到网盘。原理相同:数据库 + wp-content 两样东西拿全。

Q:还没备份,现在第一件事做什么?

现在。就按本文第二节的命令跑一遍手动备份,12 分钟。然后设个每周提醒。黑五季很多人趁促销买新机器搬家,搬家前那份备份尤其重要——优惠信息见我们的 黑五实时汇总页 和 全年促销汇总页。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部