用虚拟主机的时候,备份是主机商自动做的。换到VPS之后,备份变成了你自己的事:没有设置,就没有备份。服务器被入侵、误删文件、更新插件导致网站崩溃,这些情况迟早会遇到一次,有没有备份决定了是花十分钟恢复,还是从头再来。
本文介绍用宝塔面板备份、恢复和迁移网站的方法。
一个WordPress网站要备份什么
两样东西,缺一不可:
- 网站文件:位于
/www/wwwroot/你的域名,包括WordPress程序、主题、插件和上传的图片; - 数据库:文章、页面、产品、订单、设置都在数据库里。
只备份了文件没有备份数据库,恢复出来的是一个没有内容的空网站。
备份的基本原则
- 自动:靠人记着手动备份,一定会忘;
- 异地:备份只放在同一台服务器上,服务器出事时备份也一起没了。至少要有一份放在别的地方;
- 多份:保留最近若干天的备份,因为问题不一定当天就能发现;
- 验证过:没有试过恢复的备份,不能算备份。
手动备份
在做有风险的操作之前,比如更新WordPress大版本、更换主题、修改代码,先手动备份一次。
备份网站文件:在宝塔的网站列表里,每个站点的“备份”一栏会显示备份数量,点击它,再点击备份站点。完成后可以在列表里下载到自己的电脑。
备份数据库:在宝塔的数据库菜单里,每个数据库同样有“备份”一栏,点击后选择备份,完成后可以下载。
手动备份的文件默认保存在服务器的 /www/backup 目录下,网站在 site 子目录,数据库在 database 子目录。
用计划任务定时备份
宝塔左侧菜单的计划任务可以定时自动执行备份。需要添加两个任务。
备份网站
点击添加任务:
- 任务类型:备份网站;
- 执行周期:每天,时间选访问量最少的时段,比如凌晨3点;
- 备份网站:选择具体的站点,或者选所有;
- 备份到:服务器磁盘(配置了对象存储之后可以选对象存储);
- 保留最新:7份;
- 排除规则:可以填入不需要备份的目录,比如缓存目录
wp-content/cache。
备份数据库
再添加一个任务:
- 任务类型:备份数据库;
- 执行周期:每天,时间和网站备份错开半小时;
- 备份数据库:选择具体的数据库,或者选所有;
- 保留最新:7份。
有订单的电商网站,数据库可以备份得更频繁,比如每6小时一次。数据库通常只有几十MB,多备份几份占不了多少空间。
添加之后,在任务列表里点击执行,手动跑一次,然后点击日志,确认备份成功。
留意硬盘空间
备份会占用硬盘。一个2GB的网站保留7份就是14GB,25GB硬盘的VPS很快就满了。硬盘写满会导致数据库崩溃、网站打不开。所以:
- 根据硬盘大小调整保留份数;
- 图片很多的网站,文件可以每周备份一次,数据库每天备份;
- 最好把备份存到对象存储,本地只留一两份。
异地备份:同步到对象存储
宝塔的软件商店里有多个对象存储插件,可以让计划任务把备份直接上传到云存储:
- 国内的阿里云OSS、腾讯云COS、七牛云存储;
- 海外的亚马逊S3、Google Drive等,以及兼容S3协议的存储,比如Cloudflare R2、Backblaze B2。
以兼容S3协议的存储为例:
- 在对象存储服务商那里创建一个存储桶(Bucket),生成一组访问密钥(Access Key和Secret Key);
- 在宝塔的软件商店里安装对应的插件(亚马逊S3云存储),打开插件,填入密钥、存储桶名称和接入地址(Endpoint);
- 回到计划任务,编辑之前创建的两个备份任务,把“备份到”改成这个对象存储,可以勾选同时保留本地备份;
- 手动执行一次,到对象存储的后台确认文件已经上传。
对象存储按用量计费,几GB的备份每月的费用通常不到一美元,有的还有免费额度。
如果不想配置对象存储,最低限度的做法是:每周登录一次面板,把最新的备份下载到自己的电脑上。
和VPS厂商的快照、备份配合
VPS厂商一般提供整机的快照和自动备份:
- Hostinger VPS自带每周自动备份和手动快照,见《Hostinger VPS教程》;
- Vultr的自动备份要另外付费,是服务器价格的20%,见《Vultr教程》。
整机备份和宝塔的网站备份是互补的:
| 对比项 | 厂商的快照 / 整机备份 | 宝塔的网站备份 |
|---|---|---|
| 备份范围 | 整台服务器,包括系统和环境 | 单个网站的文件和数据库 |
| 恢复方式 | 整台服务器回到当时的状态 | 只恢复某一个网站 |
| 适合的情况 | 系统损坏、被入侵、配置改乱了 | 某个网站出问题、误删内容 |
| 能否拿到别处使用 | 一般只能在同一家厂商内恢复 | 可以,在任何服务器上都能恢复 |
建议两种都开:整机备份应对整台服务器的问题,宝塔备份应对单个网站的问题,同时也是你换服务器、换厂商时带得走的那一份。
从备份恢复网站
恢复数据库
在数据库菜单里点击对应数据库的备份数量,在备份列表里找到要恢复的那一份,点击恢复。恢复会覆盖当前数据库里的所有内容,如果不确定,先给当前的状态也备份一次。
如果备份文件在自己的电脑上,点击导入,上传 .sql 或者压缩包文件,再点击导入。
恢复网站文件
- 在文件菜单里进入
/www/backup/site,找到要恢复的备份压缩包(在电脑上的话先上传); - 把网站根目录里现有的文件改名或者移走(比如把整个目录压缩成一个包留着);
- 把备份压缩包解压到网站根目录;
- 确认文件的所有者是
www。
文件和数据库都恢复之后,访问网站检查前台和后台是否正常。
建议在网站刚做好的时候就完整演练一次恢复,可以在同一台VPS上新建一个测试站点,用备份把网站恢复到测试站点上。演练过一次,真出问题的时候才不会慌。
把网站迁移到另一台服务器
换VPS厂商、换机房、升级到新服务器的时候,需要把网站搬过去。有两种方法。
方法一:手动迁移
适合迁移一两个网站,步骤清晰,不容易出错:
- 在旧服务器上,分别备份网站文件和数据库,下载到电脑;
- 在新服务器上安装宝塔和相同或更高版本的PHP、MySQL,添加站点(域名和旧站相同),同时创建数据库;
- 把网站文件的压缩包上传到新站点的根目录并解压,删除宝塔自动生成的
index.html; - 在数据库菜单里,把数据库备份导入到新建的数据库;
- 编辑网站根目录下的
wp-config.php,把DB_NAME、DB_USER、DB_PASSWORD改成新数据库的信息; - 在站点设置里把伪静态设为wordpress;
- 先不改解析,在本机测试:修改自己电脑的hosts文件,把域名指向新服务器的IP,访问网站,检查是否正常。测试完把hosts改回来;
- 到DNS后台把域名的A记录改成新服务器的IP;
- 解析生效后,在新服务器上申请SSL证书,见《宝塔面板申请和续期SSL证书》;
- 旧服务器保留几天,确认没有问题再删除。
第7步里SSL证书还没有申请,访问时浏览器会有证书警告,属于正常现象。也可以先用DNS验证的方式在新服务器上把证书申请好,这样切换解析时没有中断。
方法二:宝塔一键迁移
如果两台服务器都装了宝塔,可以用软件商店里的“宝塔一键迁移”插件:
- 在新服务器的面板设置里开启API接口,生成API密钥,并把旧服务器的IP加入IP白名单;
- 在旧服务器上安装一键迁移插件,填入新服务器的面板地址和API密钥;
- 插件会检查两边的环境,然后让你选择要迁移的网站和数据库;
- 开始迁移,等待完成。
适合一次迁移很多个网站。前提是两边的环境要一致(都是Nginx,PHP和MySQL的版本新服务器不能低于旧服务器),新服务器上不能有同名的站点和数据库。迁移完成后,同样要先测试,再改解析。
迁移到非宝塔环境
如果是从宝塔迁移到虚拟主机或者Cloudways,用WordPress的迁移插件更方便,不涉及服务器层面的操作,见《把网站迁移到Cloudways》。
常见问题
用WordPress备份插件可以吗?
可以,UpdraftPlus这类插件能把网站备份到Google Drive等网盘,恢复也方便。它和宝塔的备份可以同时用,相当于多一层保险。区别是插件备份由PHP执行,网站很大时可能超时;宝塔的备份在系统层面执行,更稳定。
备份任务显示成功,但备份文件很小?
打开任务日志看具体信息。常见原因是数据库名选错了,或者硬盘空间不足导致压缩中断。备份文件的大小应该和网站目录的大小在同一个数量级。
恢复之后网站打不开?
检查三点:wp-config.php 里的数据库信息和实际是否一致;网站文件的所有者是不是 www;伪静态有没有设置。
多久备份一次合适?
看网站内容变化的频率。企业展示站每周一次整站备份、每天一次数据库备份就够了;每天有订单的商店,数据库至少每天备份多次。
总结
VPS上的备份要自己负责。在宝塔的计划任务里添加“备份网站”和“备份数据库”两个任务,把备份同步到对象存储,再配合VPS厂商的整机快照,就有了比较完整的保障。最后别忘了演练一次恢复。
这也是自己管VPS和托管主机的主要区别之一:Cloudways这类托管云主机的备份是面板自带的,见《Cloudways和自己管VPS哪个好?》。更多VPS教程见《VPS教程汇总》。



