不使用插件备份和恢复WordPress网站

本文将介绍,不用插件如何备份和恢复wordpress网站的数据库,本教程默认你使用的是linux VPS主机,本文讲述的方法不适用于虚拟主机。

不使用插件备份和恢复Wordpress网站
不使用插件备份和恢复Wordpress网站

不用插件备份wordpress数据库

我们都知道,wordpress如果安装过多的插件,将使网站的访问速度变慢。其实,对于安装在Linux VPS上的wordpress网站来说,我们可以使用Linux和Mysql命令来备份和恢复wordpress网站的数据库。

备份wordpress数据库

以下命令行既适用于MySQL也适用于MariaDB,我们可以通过输入以下命令,来检测我们使用的是MySQL还是MariaDB:

mysql --version

输出如下:

mysql Ver 15.1 Distrib 10.3.22-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

如上所示,我正在使用的是MariaDB。另一个检测的方法是,我们可以通过以下命令行登录数据库:

sudo mysql -u root

登录后,你将看到如下的信息:

Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 102
Server version: 10.3.22-MariaDB-0ubuntu0.19.10.1-log Ubuntu 19.10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

可以看到,我正在使用的是MariaDB 10.3.22,如果你正在使用的是MySQL,那么展示的内容可能如下所示:

8.0.7-MySQL Community Server (GPL)

下面我们来开始备份数据库。

使用“sudo mysql -u root -p”命令登录MySQL后,我们可以执行下面的命令,来查看已经建立的所有数据库。

show databases;

输出如下:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| wordpress          |
+--------------------+

一般情况下,我们能看到有4个数据库,前三个为infomation_schemamysqlperformance_schema ,第四个是我们为wordpress站点建立的数据库,也是我们唯一需要备份的数据库。下面输入“exit”命令退出MySQL服务器。

exit;

下面我们使用mysqldump工具来备份wordpress数据库。

sudo mysqldump -u root wordpress > wordpress.sql

上面的命令将在当前目录,备份名为“wordpress”的数据库到wordpress.sql文件。备份文件的名称可以随意的自定义,比如“mysite.SQL”。如果在执行上述命令行时,提示如下的错误:

mysqldump: Error: Binlogging on server not active

那么我们需要通过编辑/etc/mysql/my.cnf 或者 /etc/my.cnf 文件来配置启用二进制日志记录。

sudo nano /etc/mysql/my.cnf

或者

sudo nano /etc/my.cnf

将下面的内容,添加到[mysqld]区块的下方。

log-bin=mysql-bin

类似于:

[mysqld]
 user = mysql
 pid-file = /var/run/mysqld/mysqld.pid
 socket = /var/run/mysqld/mysqld.sock
 port = 3306
 basedir = /usr
 datadir = /var/lib/mysql
 tmpdir = /tmp
 lc-messages-dir = /usr/share/mysql
 skip-external-locking
 log-bin=mysql-bin
 #

保存并关闭该文件,然后重新启动MySQL:

sudo systemctl restart mysql

或者

sudo systemctl restart mariadb

现在我们就可以使用 mysqldump 命令,把wordpress数据库备份成一个后缀为sql的文件。为了减少占用空间,我们也可以直接把数据库被分成一个压缩包。

sudo mysqldump -u root wordpress | gzip > wordpress.sql.gz

备份wordpress根目录下的所有文件

一般情况下wordpress网站的根目录可能为/var/www/html/ 或者 /usr/share/nginx/html/,这取决于你配置的具体文件目录在哪里。使用下面的命令来进行备份:

sudo tar -cpvzf filename.tar.gz /var/www/html/

上面的命令包含5个参数,分别为:

  • -c 创建一个归档文件;
  • -p 保留已归档文件的相应权限设置;
  • -v 显示详细信息;
  • -z 使用gzip压缩归档文件;
  • -f 代表文件。

执行上述命令后,/var/www/html/文件夹下的所有文件都会被归档和压缩。

原服务器上恢复wordpress数据库和所有文件

通过上述的内容,我们就学会了如何不用插件,备份wordpress的数据库和所有文件。接下来,我们将介绍,如何恢复我们的备份。

恢复wordpress数据库

通过执行下面的命令,将数据库进行恢复。

sudo mysql -u root wordpress < wordpress.sql

你可以登录MySQL服务器查看wordpress数据库是否导入成功。

恢复wordpress文件

执行下面的命令,将备份的压缩包解压:

tar -xzvf filename.tar.gz

将解压后的所有文件,复制到网站的根目录下:

sudo cp var/www/html/* /var/www/html/ -R

通过邮件备份文件

如果想把数据库备份文件和wordpress网站的备份文件发送到自己的邮箱,我们可以按照下面的教程来操作。

首先,我们需要安装  heirloom mailx ,它支持使用外部的SMTP服务器(例如Gmail)来发送带附件的邮件。我们下面将介绍如何把数据库备份文件和wordpress网站备份文件以附件的形式用Gmail发送到你的邮箱。

安装Heirloom Mailx

如果是CentOS/RHEL系统,执行下面的命令:

sudo yum install -y mailx

Fedora系统,执行下面的命令:

sudo dnf install -y mailx

Debian/Ubuntu系统,执行下面的命令:

sudo apt-get install -y heirloom-mailx

把Gmail作为外部SMTP发送邮件

编辑 mailrc 文件,CentOS/RHEL/Fedora系统,执行下面的命令:

sudo vi /etc/mail.rc

Debian/Ubuntu系统,执行下面的命令:

vi ~/.mail.rc

将下面的内容复制到文件里:

set smtp-use-starttls
set ssl-verify=ignore
set smtp=smtp://smtp.gmail.com:587
set smtp-auth=login
set smtp-auth-user=user-account@gmail.com
set smtp-auth-password=user-password
set from="user-account@gmail.com(Your_Name)"

将文中绿色的字符内容替换为你自己的Gmail邮件信息,保存并关闭。下面我们可以使用下面的命令来发送邮件了:

echo "website backed up" | mail -v -a backup.sql -a filename.tar.gz -s "wordpress backed up" recipient@domain.com

上述命令行的参数讲解:

  • -v 详情,将展示与Gmail的连接状态;
  • -a 表示附件,我们可以使用多个-a 参数把多个附件添加到邮件;
  • -s 表示邮件主题;
  • recipient@domain.com,是我们用于接收的邮件地址。我们也可以使用发送邮件的EMAIL作为接收邮件的EMAIL,我们还可以发送给多个接收邮件的EMAIL。

CentOS/RHEL/Fedora系统,我们还需要增加下面的内容到 mail.rc 文件。

set nss-config-dir=/home/<username>/.certs/

保存并关闭,接下来就可以使用Gmail来发送邮件了。

绕过Gmail附件大小限制

Gmail限制附件的大小不能超过25M,如果我们的压缩文件大于25M,我们就需要把它拆分成多个压缩包来分别发送。

拆分压缩包,我们使用下面的命令来拆分压缩包:

split -b 5M -d filename.tar.gz <prefix>

上面命令的意思是,把“filename.tar.gz”压缩包,拆分成5M的子压缩包。<prefix>是添加在子压缩包上的名称。

split -b 5M -d linuxbabe.tar.gz wordpress

我们将获得下面的文件:

-rw-rw-r-- 1 user user 15M Nov 21 01:57 linuxbabe.tar.gz
-rw-rw-r-- 1 user user 5.0M Nov 21 13:46 wordpress00
-rw-rw-r-- 1 user user 5.0M Nov 21 13:46 wordpress01
-rw-rw-r-- 1 user user 4.5M Nov 21 13:46 wordpress02

linuxbabe.tar.gz文件被拆分成3个文件,如果我们的wordpress网站压缩包有40M,那么可以执行下面的命令:

split -b 25M -d filename.tar.gz wordpress

通过执行上述命令,我们获得了两个子压缩包,一个是25M,另一个是15M。

合并压缩包

要在服务器上恢复该文件,我们就要将两个子压缩包合并,通过执行以下 命令合并:

cat wordpress00 wordpress01 > wordpress.tar.gz

自动化操作

上面的所有操作都可以自动化的执行,我们通过安装cron来安装预定的时间进行操作,通过下面的命令安装cron:

Debian/Ubuntu系统:

sudo apt-get install cron

CentOS/RHEL系统:

sudo yum install crontabs

Fedora server系统:

sudo dnf install crontabs

如果使用了systemd,安装后需要重新启动。

sudo systemd start crond

设置为系统启动自启动:

sudo systemd enable crond

设定备份任务

执行以下的命令:

crontab -e

打开cron表,增加一个每天4点备份数据库的任务,把下面的内容复制到文件里:

0 4 * * * mysqldump -u root -pyourpassword --all-databases --master-data | gzip > backup.sql.gz

0 4 * * *的意思是每天凌晨4:00,yourpassword替换成你自己数据库的root用户的密码。

接下来,设置一个备份Wordpress根目录文件的任务,把下面的内容复制到文件里:

5 4 * * * tar -cpzf filename.tar.gz /var/www/html/

如果你的Wordpress根目录不是 /var/www/html/,可以根据实际情况更改。5 4 * * *的意思是每天4:05进行备份,下面的内容是把备份内容作为附件发送到邮箱。

10 4 * * *  echo "website backed up" | mail -a backup.sql.gz -a filename.tar.gz -s "wordpress backed up" recipient@domain.com

以上的命令,每天4:10分,把我们的数据库备份文件发送到我们的邮箱。上面的这三个任务间隔5分钟,如果想设置成完成一个后立即执行下一个任务,那么我们可以如下设置:

0 4 * * * mysqldump -u root -pyourpassword --all-databases --master-data | gzip > backup.sql.gz && tar -cpzf filename.tar.gz /var/www/html/ && echo "website backed up" | mail -a backup.sql.gz -a filename.tar.gz -s "wordpress backed up" recipient@domain.com

&&符号的意思是前一个任务成功完成后,立即执行下一个任务。

如果想在发送邮件后立即从服务器上删除备份文件,可以把如下内容增加到文件里:

15 4 * * * rm backup.sql.gz filename.tar.gz

如果希望每个小时执行一次,

0 * * * *

如果想每两个小时执行一次,

0 */2 * * *

WordPress站点迁移

如果是在原服务器上执行上述的任务,那么我们就已经完成了备份和恢复任务。但是如果想把站点迁移到一个新的服务器上,那么我们还要继续下面的任务。

准备工作

  • 首先,在新服务器上安装LAMP或者LEMP环境;
  • 第二,复制Apache或者Nginx的配置文件,以及复制SSL证书文件到新的服务器上,然后测试每个站点的运行是否正常,然后重启Apache;
  • 在新服务器上,创建一个空的MySQL/MariaDB数据库,注意按下面的步骤进行操作。

编辑备份的Wordpress根目录下的配置文件:

sudo nano /var/www/html/wp-config.php

在配置文件wp-config.php上,我们可以看到之前网站上的数据库名称、用户名及密码:

/** The name of the database for WordPress */
 define('DB_NAME', 'database-name');
/** MySQL database username */
 define('DB_USER', 'database-username');
/** MySQL database password */
 define('DB_PASSWORD', 'user-password');

登录MySQL服务器:

sudo mysql -u root

创建数据库:

create database database-name;

授予用户Wordpress数据库的所有权限:

grant all privileges on database-name.* to database-username@localhost identified by 'user-password';

刷新使授权生效;

flush privileges;

退出MySQL服务器:

exit;

把备份的数据库文件导入新的服务器,以恢复网站数据:

sudo mysql -u root wordpress < wordpress.sql

现在我们就已经成功的把Wordpress网站迁移到了一个新的服务器上,重新配置一下域名的解析信息,网站就可以正常访问了。

删除VPS前的注意事项

在删除不用的VPS之前,我们需要做好以下工作,这些将防止你删除掉尚未迁移的软件和数据。

  • 执行sudo certbot certificates,查看VPS上的Let’s Encrypt TLS证书;
  • 执行sudo netstat -lnptu,查看服务器上正在运行的服务;
  • 执行sudo ncdu /查看服务器硬盘的使用情况。要执行该命令需要安装ncdu,sudo apt install ncdu;
  • 执行sudo crontab -l,来查看VPS服务器上是否有任何的定时任务;
  • 查看home目录下是否有什么重要文件。

总结

通过上述文章内容,我们没有使用任何的插件,就完成了Wordpress网站的备份和恢复任务。

原创文章,作者:牛奇网,如若转载,请注明出处:https://www.niuqi360.com/wordpress/backup-restore-wordpress-without-plugin/

发表评论

登录后才能评论