在没有插件的情况下在Linux服务器上备份和还原WordPress站点

在之前的教程中,我向您展示了如何在Linux服务器上安装WordPress。 在本文中,我将向您展示如何备份WordPress网站并在没有插件的情况下还原它。 我假设您可以通过SSH访问Linux VPS(虚拟专用服务器)或专用服务器,并且知道一些基本的Linux命令。 如果您有共享的托管计划,那么很抱歉本文不适合您。

无需插件即可备份WordPress

因此,您可能知道您不应该在WordPress网站上安装太多插件,因为这会减慢您的网站速度。 对于在虚拟专用服务器或专用服务器上托管WordPress的您来说是个好消息。 您可以使用Linux和MySQL命令来自动执行WordPress备份过程,以便删除WordPress备份插件。 最重要的是,这种备份方法是免费的!

要备份WordPress网站,我们必须备份数据库和您的webroot目录下的所有文件。 首先,我将解释如何备份数据库。

备份WordPress数据库

以下命令适用于MySQL数据库和MariaDB数据库。 对于不认识的人,MariaDB是MySQL的直接替代品。 这意味着MariaDB的99%的命令与MySQL的命令相同。 如果将MySQL用作数据库服务器,我强烈建议您迁移到MariaDB。

您可以通过在shell提示符下执行以下命令来检查您是使用MariaDB还是MySQL:

mysql --version

样本输出:

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

如您所见,我正在使用MariaDB。 检测您是否拥有MySQL或MariaDB的另一种方法是使用MySQL客户端登录到数据库服务器。

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 Server 10.3.22版。 如果使用MySQL数据库,则服务器版本将如下所示:

8.0.7-MySQL Community Server (GPL)

现在,您知道要使用的数据库服务器,让我们进行备份。

使用以下命令登录数据库服务器后 须藤mysql -u root -p 命令,执行以下命令以显示服务器上拥有的所有数据库。 不要遗漏分号。

show databases;

样本输出:

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

通常,您有四个数据库。 每个MySQL / MariaDB服务器都包含 infomation_schemaMySQL的performance_schema 数据库。 最后一个是WordPress网站的数据库,这是您唯一需要备份的数据库。 输入exit命令以退出数据库服务器。

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 配置文件,具体取决于您的Linux发行版。

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
 #

保存并关闭文件。 然后重新启动数据库服务器

sudo systemctl restart mysql

要么

sudo systemctl restart mariadb

现在使用上面 mysqldump 命令将您所有的WordPress数据库备份到 .sql 文件。

您还可以压缩备份文件,以免占用太多空间。

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

在Webroot下备​​份WordPress文件

您的WordPress程序文件,主题文件,插件文件和上传的图片都在webroot目录中。 您的webroot目录可能是 / var / www / html / 要么 / usr / share / nginx / html / 或类似的内容取决于您的Web服务器配置。

为了备份这些WordPress文件,我们将使用命令行工具 柏油, 缺乏 Ťap AR细香葱。 在shell提示符下输入以下命令。

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

上面的命令有5个选项,其中:

  • -C 表示创建存档文件。
  • -p 表示保留已归档文件的权限。
  • -v:显示详细信息。
  • -z 表示使用gzip压缩存档文件。
  • -F 代表文件。

filename.tar.gz是存档文件名, / var / www / html / 意味着webroot目录下的所有文件和目录都将被归档和压缩。 您的webroot目录可能不同,因此请检查您的Web服务器配置。

在同一服务器上还原WordPress数据库和文件

现在,您知道了如何备份WordPress数据库和文件,但是如果您不知道如何还原它们,那就没用了。

恢复WordPress数据库

假设您的WordPress网站已通过插件中的漏洞被黑客入侵。 如果您有数据库的备份,则可以轻松地恢复原始状态。 输入以下命令以将以前备份的数据库导入MySQL / MariaDB数据库服务器。

sudo mysql -u root wordpress < wordpress.sql

之后,您可以登录数据库服务器,查看是否已导入所有数据库。

恢复WordPress文件

首先,提取压缩包

tar -xzvf filename.tar.gz

然后将WordPress文件复制到webroot目录。 我假设您的Web根目录为/ var / www / html /。

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

通过电子邮件将备份文件发送到收件箱

如果您想通过电子邮件将数据库备份文件和WordPress备份文件发送到收件箱,请按照以下步骤操作。

一,安装 传家宝。 传家宝mailx很棒 邮件用户代理 (通过电子邮件客户端)。 它支持 附件 并可以使用外部SMTP服务器(例如Gmail)发送电子邮件。 我们将使用Gmail作为SMTP服务器将数据库备份文件和WordPress备份文件作为附件发送。

安装传家宝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 [email protected]
set smtp-auth-password=user-password
set from="[email protected](Your_Name)"

将绿色文本替换为您的Gmail帐户凭据。 保存并关闭文件。 现在,我们现在可以使用 邮件 像这样的命令:

echo "website backed up" | mail -v -a backup.sql -a filename.tar.gz -s "wordpress backed up" [email protected]

以下文字 回声 是个 邮件内容 将通过管道发送到mail命令。

  • -v 代表详细,它将显示您与Gmail的连接状态。
  • -一种 代表附件。 你可以使用多个 -一种 向邮件添加多附件的选项。
  • -s 表示主题。
  • 最后一个参数是收件人的电子邮件地址,例如[email protected]。 顺便说一句,您可以向自己发送电子邮件。 这意味着发件人地址和收件人地址可以相同。 您也可以添加多个收件人电子邮件地址。

CentOS / RHEL / Fedora服务器需要添加一条额外的行到 mail.rc 文件。 首先,将这三个文件下载到您的服务器中,然后放到家里的 .certs 目录。 如果您在台式机Linux上使用firefox,则也可以在以下位置找到这些文件 〜/ .mozilla / firefox / <任意字母> .default 目录。

然后将以下行添加到 /etc/mail.rc 文件。

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

保存并关闭文件。 现在,您可以使用Gmail作为中继发送电子邮件。

绕过Gmail的附件文件大小限制

Gmail将发件人的附件总大小限制为2500万,尽管Gmail帐户可以收到3400万附件。 您的数据库可能不会很快变大,但是WordPress文件往往会很快变大。 如果存档文件大于25M,则可能需要将存档文件拆分为多个部分,然后通过电子邮件将其一一发送。

分割档案

为此,我们将使用 分裂 命令。 其语法如下:

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

上面的命令意味着将filename.tar.gz拆分为文件的5 MB。 您可以将5M更改为低于25M的值。

是将在拆分文件之前添加的名称。

例如,如果我执行以下命令:

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文件分为三个文件。 假设您的存档文件大小为40 MB。 您可以使用以下命令:

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

得到一个25M的文件和另一个15M的文件。 现在,您可以将这两个文件发送到您的Gmail帐户。 但是你必须使用 邮件 命令两次以发送每个文件,您不能一次将两个文件作为附件发送。

如何一起加入

恢复网站时,必须将这些拆分文件合并在一起。 我们可以使用cat命令来完成此操作。

cat wordpress00 wordpress01 > wordpress.tar.gz

流程自动化

是! 您可以自动化上述过程。 谁不喜欢自动化?我们将安装 克朗 并使用它计划备份任务。 使用以下命令安装它:

对于Debian / Ubuntu服务器:

sudo apt-get install cron

对于CentOS / RHEL:

sudo yum install crontabs

对于Fedora服务器:

sudo dnf install crontabs

如果您使用 系统的,那么您需要在安装后启动它。

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。 将绿色文本替换为数据库根密码。

接下来,我们将备份webroot中的WordPress文件。 在下一行中添加以下文本。

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

如果您的Web根目录不是/ var / www / html /,而是/ usr / share / nginx / html之类的东西,请进行更改。 因此,我们每天4:05备份wordpress文件。 然后,我们需要将其作为附件发送到我们的电子邮件地址。

10 4 * * *  echo "website backed up" | mail -a backup.sql.gz -a filename.tar.gz -s "wordpress backed up" [email protected]

上面的命令将每天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" [email protected]

双“&”号 (&&)表示在前一个命令成功完成后执行下一个命令。 因此,您不必等待5分钟。 但是这种格式会使您的crontab文件有些混乱。

如果要在发送电子邮件后删除数据库备份和文件备份以节省服务器空间,则可以添加

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

或只是附加 R M 使用&&命令。

如果希望您的cron作业每小时运行一次,则可以执行以下操作:

0 * * * *

或每两个小时一次

0 */2 * * *

将您的WordPress网站移至新服务器

如果还原过程在原始服务器上,则操作完成。 您的WordPress网站现在可以像以前一样正常运行。 但是,如果您将站点从原始服务器转移到另一台服务器,请按照以下说明进行操作。

  • 首先,您需要在新服务器上安装LAMP堆栈或LEMP堆栈。
  • 然后,您应该将Apache或Nginx虚拟主机文件和SSL证书文件复制到新服务器。 确保测试虚拟主机文件并重新加载Web服务器。
  • 接下来,将WordPress文件复制到webroot目录下的新服务器。
  • 之后,您需要在新服务器上的MySQL / MariaDB中创建一个空数据库,如下所述。

打开webroot目录下的默认WordPress配置文件。

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

这将打开您的 wp-config.php 文件,在该文件中,您可以找到 数据库用户 您是在首次安装WordPress时创建的,其用户密码如下所示:

/** 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');

现在,使用以下命令登录数据库服务器:

sudo mysql -u root

创建数据库。

create database database-name;

向用户授予WordPress数据库的所有特权:

grant all privileges on database-name.* to [email protected] identified by 'user-password';

刷新数据库特权。

flush privileges;

退出数据库服务器。

exit;

现在,将备份的SQL文件复制到新服务器并还原数据库。

sudo mysql -u root wordpress < wordpress.sql

您已成功将WordPress网站转移到新服务器上。 更改您的DNS记录,您应该会看到WordPress网站正常运行!

删除VPS之前要注意的事项

在删除不再需要的VPS之前,我通常会执行以下操作。 它们帮助我防止在不进行迁移的情况下删除重要的软件或数据。

  • 列出让我们使用以下方法加密VPS上的TLS证书 sudo certbot certificates
  • 列出VPS上正在运行的服务 sudo netstat -lnptu
  • 使用以下命令检查磁盘使用情况 sudo ncdu /。 是的,您需要安装ncdu实用程序: sudo apt install ncdu
  • 检查VPS上是否有任何Cron作业 sudo crontab -l
  • 检查主目录以查看是否有一些文件。

包起来

恭喜! 您刚刚使用Linux命令备份了WordPress网站,最好的部分是您可以自动化备份过程,而不必购买WordPress备份插件。 此外,由于您刚刚从站点中删除了插件,因此WordPress站点的加载速度将更快。

Sidebar