有人把整个网站目录用FTP拖回本地,以为这就叫备份完了,等到要恢复的时候才发现文章全没了。vps备份这件事,答案就一句:数据库和文件两样都要备,缺一样都恢复不出一个完整的站。
数据库里装着你写过的每一篇文章、每一条评论、每一个链接,它跑在WordPress目录外面的一套MySQL或MariaDB里,下载站点目录带不走它。文件那边,重点是wp-config.php和wp-content,前者存设置和数据库连接信息,后者放主题、插件和上传的图片。这两块凑齐,并且导出时间点靠近,才算一份能用的备份。
- 备什么:数据库和文件,两样都要,缺一样恢复不出完整站点
- 官方推荐:至少留3到5份近期备份,分散放在不同位置
- 怎么备:数据库用mysqldump或phpMyAdmin导出,文件用FTP或同步工具拉回本地
- 多久一次:小站每周一次,更新频繁的站每天一次,每次升级前必做
- 最容易漏的:备份了文件不等于备份了数据库
这篇把一台VPS上的WordPress要备什么、有哪几条路子、分几步做、备多勤、往哪放、怎么验证,一项一项说清楚。手头还没有机器、正在挑配置的,VPS 那篇可以先看;哪天真要换机器搬站,VPS怎么迁移 里是另一套顺序。
本文目录
一台VPS上到底要备份哪些东西
WordPress官方的说法很干脆:一个站点的备份分两部分,数据库和文件,要完整恢复一个典型的WordPress站,两样都得有。只做了其中一半,等于没备全。

数据库:文章、评论、链接全在里面
数据库里装的是你写过的全部内容。官方原话是这么讲的:「Your WordPress database contains every post, every comment and every link you have on your blog.」数据库被清空或者损坏,就等于丢掉你写过的所有东西。文章正文在wp_posts表里,评论在wp_comments里,链接在wp_links里。
这里有个关键的物理事实:数据库不放在网站目录里。它跑在单独的一套数据库系统上,一般是MySQL或MariaDB。所以「备份数据库」这个动作,实际做的是导出一个文件,可能是.sql、.gz或者.bz2,恢复的时候再把它导回MySQL或MariaDB。文件是文件,但导出它的动作和拉网站文件是两回事。
文件:wp-content和wp-config.php是重点
文件指的是网站目录里的那些东西:WordPress核心、主题、插件、上传的图片、wp-config.php、.htaccess。听着很多,真要全备也不用。
核心文件一般不用备。官方写得很清楚,核心文件可以从WordPress官方的zip压缩包重新下载替换,下载一份新的覆盖回去就行。真正要重点盯的是两样:wp-config.php和wp-content目录。前者存的是你的设置和数据库连接信息,后者默认放的是你自己产生的内容,改过的主题、新装的插件、上传的图片全在这里面。
插件和主题在后台还能重装,但改过的模板文件、上传的图片、配置文件里的数据库密码,丢了就得一个个重来。这就是为什么备份的重点是这两块,而不是整个目录照搬。
为什么下载整个站点目录不算备份
因为数据库在WordPress目录外面。你用FTP把整个网站目录拖到本地,拖下来的全是文件,数据库一个字节都不在里面。看到自己备份包里有个.sql文件,就以为万无一失,那个.sql如果是很早以前导出的旧文件,和当前数据库对不上,恢复回去等于把站退回几个月前。
反过来同样成立。只导出数据库不备文件,主题、插件、上传的图片、wp-config.php全不在里面,恢复出来的站结构还在,样式和图片全是空的。两样凑齐,并且时间点靠近,才算一份能用的备份。
vps备份方案有哪几条路子,先做哪个
能走的路子就三条,没有想象中那么多花样。选哪条看你现在手上有哪些工具,以及你愿不愿意敲命令。
三条路子:命令行、面板工具、主机商快照
- 命令行:mysqldump是MySQL自带的客户端工具,做的是逻辑备份,产出一组SQL语句,执行之后能重现原来的数据库对象定义和表数据。它的好处是输出能看、能改,格式还可以是CSV、其他分隔文本或者XML。
- 面板或图形工具:phpMyAdmin在左侧选中库,点顶部Export;MySQL Workbench点左侧Data Export,选库、指定目标目录、点Start Export。Workbench没有phpMyAdmin那种库大小限制。
- 主机商备份:多数主机商会备份整台服务器,包括你的站点;保留几份、多久清掉,看主机商后台怎么写的。
三条路子不冲突。主机商那份归主机商管,保留多久看主机商怎么写;命令行和面板导出归你自己管,文件在你手上。真要出事,能立刻拿出来用的是后者。
先手动跑通一次完整备份加恢复
先手动做一次完整的:导出数据库、拉回文件、两样放进同一个文件夹,然后在测试环境里恢复一遍,看到站能正常打开、文章数量对得上。这一步跑通了,再去谈自动化。
顺序不能反。自动化脚本写错一个参数,比如导出到了没权限的目录、或者密码写在脚本里失效了,它可能连着几个月都在生成0字节的文件,而你毫不知情。等到真要用的时候才发现,那才是最坏的情况。WordPress插件目录里有定时备份数据库的插件,后台的插件浏览器里就能找到,装之前先把手动流程跑通。
主机商备份为什么不能当唯一方案
官方这段话值得记住:多数主机商会备份整台服务器,包括你的站点,但从主机商的备份里要一份站点副本是要花时间的,而快速恢复很关键。你发一条工单,排队,等回复,等对方从归档里翻出来,这段时间站是关着的。
所以主机商那份当兜底,自己手上要有一份能马上拿出来导入的。整套流程和顺序,WordPress备份教程 里讲得更细,可以对着做一遍。
数据库和文件分别怎么备:分步做法
下面这套是手动的完整流程,跑通之后再考虑用插件或者脚本把它自动化。
第一步 备数据库:mysqldump一行命令,或phpMyAdmin选Quick
命令行写法是这样,一行敲完:
mysqldump --add-drop-table -h mysql_hostserver -u mysql_username -p mysql_databasename
四个参数分别对应主机名、数据库用户名、提示输入密码、库名。回车后输密码,屏幕上会滚出一堆SQL语句,那就是你的库。想直接压成一个文件,用管道接压缩:
user@linux:~/files/blog> mysqldump --add-drop-table -h db01.example.net -u dbocodex -p wp | bzip2 -c > blog.bak.sql.bz2
bzip2的压缩率通常比.zip和.gz高,代价是压缩和解压明显更慢,大库用gzip更快。这一点在库大的时候很实际,别为了省那点空间让每次备份多等半小时。
不想敲命令的走phpMyAdmin。登录进去,左栏选中WordPress那个库,点顶部Export标签,Quick选项默认已经选中,点Go,浏览器会提示下载文件,存到本地。要压缩就在Output区选zipped或gzipped,Format区确认选的是SQL,这个格式导出的是一串SQL命令,和CSV不是一回事。
还没登过服务器、SSH没连过的,先按 SSH 上手步骤 把终端连上,命令才有地方敲。
第二步 备文件:FTP或同步工具方向设成local
最简单的是用FTP程序把WordPress文件从主机下载到本地电脑。要经常做,用WinSCP这类能同步的工具更省事,方向设成local,意思是从网站主机复制文件到本机,同步模式选Synchronize files,之后每次点一下就能把服务器上的改动同步下来。
方向这个设置是重点,设反了会把你本地的旧文件覆盖到服务器上,那是一次人为事故。同步完把文件夹压成zip,省空间,也方便留着多个时间点的版本。
第三步 合成一个备份集:先库后文件,时间点靠近
官方推荐把文件和数据库当成一个备份集,两者在同一时间点附近生成。这样做的好处是恢复出来不会出现「文件是新的、库是旧的」这种错位。
顺序是先备份数据库,再备份WordPress文件。先导库再拉文件,中间这段时间就算有人发了一篇新文章,恢复出来最多少一篇,结构不会乱。
每步出问题怎么回查
- 导出文件是0字节:命令没执行完,或者输出写到了没权限的目录。换用--result-file指定一个明确的路径。
- 编码不对、导不进去:在Windows上拿PowerShell做输出重定向,生成的是UTF-16编码文件,UTF-16不能作为连接字符集,这个文件加载不了。绕开的办法就是用--result-file,它生成的是ASCII格式。
- 加载时命令行报符号错误:PowerShell把「<」保留了,不能直接用重定向,改用cmd.exe /c "mysql < dump.sql" 这种写法。
- 库太大,phpMyAdmin处理不了:官方的说法是phpMyAdmin处理不了大数据库,这种时候直接用MySQL或MariaDB的命令行更合适。
vps备份频率多久一次,保留几份
官方给的是两档,按站点情况对号入座就行。
| 站点情况 | 建议频率 | 保留份数 |
|---|---|---|
| 小站、文章少 | 每周一次 | 至少3到5份近期备份 |
| 更新频繁、文章多 | 每天一次 | 至少3到5份近期备份 |
| 每次升级前 | 必须备一次 | 并入上面这批近期备份 |
这张表给的是下限,不是上限。发文越勤、改动越多,越该往上加频率,而不是找理由往下减。
频率到底由什么定,官方把这句写得很直白:取决于你多久发一次内容、你愿意多久备一次、以及数据库连同几篇文章一起丢了你会是什么感受。这三个问题你自己的答案,就是你的频率。一个月发两篇的站,天天备份意义不大;一天改三次模板的站,一周备一次就是在赌。
还有一个固定项不能漏,每次升级前都备一次。升级是点一下就可能让整站打不开的动作,插件升级、主题升级、WordPress版本升级都算。备完之后再点升级按钮,顺序别弄反。
本地加异地怎么放才算稳
官方给的例子是三个存放点:主机服务器上一份、云存储一份、下载到本地电脑一份。这不是为了凑数,是因为这三种位置坏起来的原因各不相同。服务器整机挂掉,云存储那份还在;云存储账号出问题,本地硬盘那份还在。
把三份备份放在同一台机器的三个目录里,以为这就是分开放了,机器一挂,三个目录一起没,等于只备了一份。分开放的意思是物理位置和服务商都分开。
云盘那点容量、上传速度和长期存的成本,长期备份 里是另一套判断标准,挑存放点之前值得看一眼。
自动化了也要偶尔手动备一次
官方明确说过,备份可以自动化,但强烈建议偶尔手动备份一次,用来确认自动流程确实在工作。这句话的分量比看上去重。自动任务最典型的失败方式是静默失败:任务显示成功,文件是0字节,或者根本没写进去,界面上一切正常。
手动备一次,下载下来,打开看一眼,这个动作花不了几分钟,能挡掉大部分「以为有备份」的情况。频率上不用勤,隔一段时间做一次就行,关键是别让自动流程变成唯一的信息来源。
恢复演练做到什么程度才算真备份
没恢复过的备份,只能算一个文件。恢复的顺序和备份的顺序是反的:先恢复WordPress文件,再恢复或导入数据库。这个顺序官方写得很明确,反着做,导入库的时候会因为表对不上出问题。
迁移或者重装的过程中如果改过数据库账号密码,wp-config.php里的连接信息要同步改掉。改漏了这一项,站打开是一片空白,看着像备份坏了,其实是配置文件还指着旧的数据库密码。
验收三条
- 导出文件能打开,大小不是0,开头能看到建表语句。
- 在测试库里导入之后,表结构对得上,文章数也对得上。文章总数在WordPress后台的文章列表里能看到,两边一比就知道漏没漏。
- 文件确实存在第二个位置,而不是只躺在原来那台服务器上。
三条都过了,这份备份才算能用。只过第一条,说明你有一个文件;只过第三条,说明你有一份不知道能不能恢复的文件。
每季度挑一份真恢复一次
挑一个不忙的时段,拿一份近期备份,在测试目录或测试库里走一遍完整的恢复流程。走通了,心里有底;走不通,现在发现问题,总比站挂了才发现强。
演练一定要在测试环境做。在线上站上直接试恢复,等于把唯一的房子点了火做消防演习。
常见误区和排查
下面这几条是实际会卡住人的地方,一条条对。
以为备了文件就把数据库一起备了
典型WordPress配置下答案是不会,因为数据库存在网站目录之外,你下载目录拿不到它。依据就是官方那句「Usually no」,文件和库分别在两个系统里存着。
phpMyAdmin快速备份恢复时,目标库不能有任何表
这条最容易在迁移时踩到。用Quick导出的备份,恢复的目标新库里不能有任何表,否则导入会失败。新建一个空库,再导进去。
库里还有别的程序时,只选wp_前缀的表
一个数据库里不只跑着WordPress的时候,自定义备份只勾选属于这个站的那些表,也就是wp_开头、或者你在wp-config.php里给table_prefix设的那个前缀开头的那批。全选会把别人的数据也一起打包,恢复时互相覆盖。
PowerShell重定向导出成UTF-16,加载不了
在Windows上用PowerShell敲mysqldump加重定向,生成的文件是UTF-16编码,这个编码不能作为连接字符集,导入会直接失败。解决办法是加--result-file,输出就变成ASCII格式了。
cPanel里生成整站全量备份,恢复不了
官方的说法是全量备份只用于归档,不能通过cPanel恢复。想要能恢复的,走Download a MySQL Database Backup那条路,点数据库名下载一个.gz文件,恢复时不用解压,同一个程序上传这个文件就行。
另外两个跟备份直接相关的动作也放这。要动数据库里的修订版本,先把库完整备一份再动手,先备份再清修订 就是这个顺序。机器被人打进来、文件被改过,备份是你回退的那条路,VPS搭建后怎么防止被攻击 讲的是提前把入口关上。
AI能帮哪几步备份,人要核什么
备份这件事机械、重复、步骤固定,正好是AI能接走一部分的活。它能帮的集中在四步。
- 按官方清单列出你这台机器上要备份的目录和文件,对着wp-content、wp-config.php、.htaccess逐项打勾,省掉自己翻文档。
- 根据你的发文节奏,把「每周一次」还是「每天一次」的判断写成一张决策表,你填几个问题就出结论。
- 把mysqldump加压缩、加--result-file的命令行拼好,并标出哪个选项会改变导出结果。
- 把恢复顺序写成一份能照着执行的检查清单,先文件后库,改过密码要动哪一项,列清楚。
下面三条提示词是本文给的示例,不是官方模板,可以照着改。
- 「按WordPress官方备份文档,列出一台VPS上WordPress站要备份的文件和数据库清单,每项说明为什么,不要编造文档里没有的项。」
- 「我的WordPress站每周发2篇文章,按官方建议判断备份频率应该是每周一次还是每天一次,给出判断依据的原句。」
- 「帮我把mysqldump导出WordPress数据库并gzip压缩写成一行命令,说明--add-drop-table和--result-file各自的作用。」
有三件事AI替不了,得你自己动手。先说最关键的,在phpMyAdmin或命令行里实际执行一次导出,确认下载到的.sql或.gz文件能打开、大小不是0。还有个事儿,在测试库或测试目录里实际导入一次,看表结构和文章数量对不对,再决定这份备份留不留。最后一步,去主机后台或本地电脑上确认文件确实存到了第二个位置,而不是只留在原服务器上。这三步是判断依据,不是走过场。
把官方那份备份文档整理成一份能对照的清单,这种反复比对原文的活,交给猎者出海的AI Agent 更省时间,你只负责按清单去执行和验收。
常见问题
多久备一次比较合适
小站、文章少的每周一次,更新频繁的每天一次,每次升级前必做一次。频率最终由你的发文节奏和「丢几篇文章能不能接受」决定,官方把这个决定权交给你。
该保留多少份备份
至少3到5份近期的,分散在不同位置。份数比期限重要,因为文件损坏和误删不看时间。
备份能不能自动化
可以,插件目录里有定时备份数据库的插件。但自动化之外要偶尔手动备一次,确认那个流程真的在跑。
备份文件是不是也把数据库备了
典型WordPress配置下不会。数据库存在网站目录之外,下载目录拿不到它,得单独导出。
这套方法能用来备份其他数据吗
能。备份本身是通用的做法,导出一份、存到第二个位置、验证能恢复,这个流程换什么数据都成立。
一台VPS上的备份,做到最后就是三件事:库和文件都备、按自己的节奏备、备完放三个地方并且真的恢复过一次。这三件事做完,站被人搞坏、升级升崩、机器到期没续,你都有退路。想让自己这份计划不靠记性,可以把整理官方条款和出清单的活交给猎者出海的AI Agent,执行和验收还是自己来。

发表评论