WordPress 网站的备份

WordPress 网站备份三要素

要对网站进行备份,不妨先问这样一个问题:基于 WordPress 的站点何以成为属于您的独一无二的网站?事实上,属于站长的独特数据主要基于以下三处:网站根目录、数据库、wp-config.php 配置文件。

网站本体的备份

即网站的最主要部分:WordPress 框架文件、文章、媒体文件、主题、插件等。

对于 Linux 服务器,它们位于 /www/wwwroot/网站名称 目录下:

-rwxr-xr-x  1 www www   405 Feb  6  2020 index.php
-rwxr-xr-x  1 www www 19915 Feb 26 14:33 license.txt
-rwxr-xr-x  1 www www  7437 Feb 26 14:33 readme.html
-rwxr-xr-x  1 www www  7165 Jan 21  2021 wp-activate.php
drwxr-xr-x  9 www www  4096 Feb 26 14:33 wp-admin
-rwxr-xr-x  1 www www   351 Feb  6  2020 wp-blog-header.php
-rwxr-xr-x  1 www www  2338 Feb 26 14:33 wp-comments-post.php
-rwxr-xr-x  1 www www  3283 Dec  2 17:21 wp-config.php
-rwxr-xr-x  1 www www  3001 Feb 26 14:33 wp-config-sample.php
drwxr-xr-x  7 www www  4096 Feb 26 23:57 wp-content
-rwxr-xr-x  1 www www  3939 Jul 31  2020 wp-cron.php
drwxr-xr-x 26 www www 16384 Feb 26 14:33 wp-includes
-rwxr-xr-x  1 www www  2496 Feb  6  2020 wp-links-opml.php
-rwxr-xr-x  1 www www  3900 May 16  2021 wp-load.php
-rwxr-xr-x  1 www www 47916 Feb 26 14:33 wp-login.php
-rwxr-xr-x  1 www www  8582 Feb 26 14:33 wp-mail.php
-rwxr-xr-x  1 www www 23025 Feb 26 14:33 wp-settings.php
-rwxr-xr-x  1 www www 31959 Feb 26 14:33 wp-signup.php
-rwxr-xr-x  1 www www  4747 Oct  9  2020 wp-trackback.php
-rwxr-xr-x  1 www www  3236 Jun  9  2020 xmlrpc.php

打包这个文件夹,就可以备份网站的主要数据,也即宝塔面板计划任务备份到 /www/backup/site 目录下的一个压缩包 web_网站名称_日期_时间.tar.gz。若没有规定计划任务,则可以在面板找到“网站”选项卡,在右侧站点列表里找到要备份的站点,点击“备份”一栏,在弹出的对话框左上角点击“备份站点”,即可在上文提到的备份目录下找到压缩包,下载即可。

对于基于 phpstudy 的本地网站,这些文件位于 phpstudy_pro\WWW\wordpress 目录下,要备份它们,直接将该文件夹压缩打包即可。

数据库的备份

它相当于一个网站文章、媒体文件等数据的花名册。要正常运行网站、访问网页文件,就必须从这个花名册那里拿到网站数据的位置、结构等信息。

对于 Linux 服务器,宝塔面板计划任务会将数据库备份到 /www/backup/database 目录下,名称为 db_数据库名称_日期_时间.sql.gz。若没有规定计划任务,则可以在面板找到“数据库”选项卡,在右侧站点列表里找到要备份的数据库,点击“备份”一栏,在弹出的对话框左上角点击“备份”,即可在上文提到的备份目录下找到压缩包,下载即可。

对于基于 phpstudy 的本地网站,可在面板首页点击右上角数据库工具打开 phpmyadmin,在左侧列表中找到网站对应的数据库,单击进入,点击右侧顶部菜单“导出”,全部选项保持默认,点击底部“执行”即可将备份的数据库下载到本地计算机。

wp-config.php 文件的意义与作用

这是网站本体文件夹下的一个重要的配置文件,它记录了网站的数据库名、数据库用户名、数据库密码、主机名、字符集等信息。在网站恢复中,这些信息在解压压缩包到网站根目录后不需要修改;在网站迁移中,若这些信息没有保持不变,则需要仔细核对并修改,另外若是更换了域名,也需要对该文件进行操作。

该文件较重要的几行代码如下:

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', '数据库名称' );

/** MySQL database username */
define( 'DB_USER', '数据库用户名' );

/** MySQL database password */
define( 'DB_PASSWORD', '数据库密码' );

/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

/** Database charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8mb4' );

/** The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );

WordPress 网站的恢复

有时,升级了插件或 WordPress 版本,会导致网站部分功能出现问题,甚至直接崩溃无法打开,这时计划任务备份的重要性就体现出来了——此时我们只需优雅地从 backup 文件夹内取出备份,导入到对应位置,就能将网站恢复到出错前的某个版本。

由前文的介绍不难知道,WordPress 网站的恢复,就是把网站本体、数据库的压缩包重新导入到服务器或本地文件夹上,由于没有更改相关信息,便无需修改 wp-config.php

因此,需由以下两个步骤恢复网站:

恢复网站本体

找到网站本体的备份压缩包,解压覆盖对应文件即可。

将网站从服务器端迁移到本地时,只需将本地 wordpress 文件夹或已修改为域名的文件夹中所有文件删去,用服务器 site 备份下的文件替换掉即可。

恢复数据库

对 Linux 服务器,只需在宝塔面板中找到“数据库-备份”一栏,点击“导入”,选择与本体备份相同时间对应版本的备份导入即可。

对基于 phpstudy 的本地站点,则需要打开 phpmyadmin,在左侧找到对应数据库单击进入,右侧顶部菜单选择“导入”,选择上传对应版本的数据库备份文件,点击“执行”即可。

WordPress 网站的迁移

常见的需要网站迁移的情形有:本地站点 – 服务器端的相互迁移、将旧服务器上的内容迁移到新服务器(可能还需更换域名)。下面将对这两种情况进行解析:

导入网站本体

将网站从服务器端迁移到本地时,请参考 2.1。

导入数据库

将网站从服务器端迁移到本地时,请参考 2.2。

修改 wp-config.php 配置文件

例如从服务器将网站迁移到本地:

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'myblog' );

/** MySQL database username */
define( 'DB_USER', 'root' );

/** MySQL database password */
define( 'DB_PASSWORD', 'root' );

/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

/** Database charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8mb4' );

/** The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );

更换域名

找到:

/* Add any custom values between this line and the stop editing line. */

在该行下面添加以下代码:

define('WP_SITEURL', '新域名(要带http或https)');
define('WP_HOME', '新域名(要带http或https)');

例如从服务器将网站迁移到本地:

define('WP_SITEURL', 'http://localhost/wordpress/');
define('WP_HOME', 'http://localhost/wordpress/');

配置固定链接

例如从服务器将网站迁移到本地时,若之前设置过固定链接,迁移到本地后出现只能进首页但点不进文章详情页的情况,此时需要登录后台将固定链接设置为“朴素”。