网站搜索

如何使用 Rsync 同步两个 Apache Web 服务器/网站


网络上有很多教程可以用不同的方法镜像或备份网络文件,我在这里创建这篇文章以供将来参考,在这里我将使用一个非常简单且通用的 Linux 命令 创建网站的备份。本教程将帮助您使用“Rsync”在两个网络服务器之间同步数据。

使用Rsync创建Web服务器镜像的目的是,如果您的主Web服务器发生故障,您的备份服务器可以接管以减少网站的停机时间。这种创建 Web 服务器备份的方法对于中小型 Web 企业来说非常好且有效。

同步 Web 服务器的优点

使用 rsync 创建 Web 服务器备份的主要优点如下:

  1. Rsync 仅同步那些已更改的字节和数据块。
  2. Rsync 能够检查并删除备份服务器上那些已从主 Web 服务器上删除的文件和目录。
  3. 它在远程复制数据时处理权限、所有权和特殊属性。
  4. 它还支持SSH协议,以加密方式传输数据,让您放心所有数据都是安全的。
  5. Rsync在传输数据时使用压缩和解压缩方法,消耗较少的带宽。

如何同步两个 Apache Web 服务器

让我们继续设置 rsync 以创建 Web 服务器的镜像。在这里,我将使用两台服务器。

主服务器
  1. IP地址:192.168.0.100
  2. 主机名:webserver.example.com
备份服务器
  1. IP地址:192.168.0.101
  2. 主机名:backup.example.com

第1步:安装Rsync工具

在本例中,webserver.example.com 的 Web 服务器数据将镜像到 backup.example.com 上。首先,我们需要借助以下命令在两台服务器上安装Rsync

[root@tecmint]# yum install rsync        [On Red Hat based systems]
[root@tecmint]# apt-get install rsync    [On Debian based systems]

第 2 步:创建用户来运行 Rsync

我们可以使用root用户设置rsync,但出于安全原因,您可以在主网络服务器上创建一个非特权用户,即webserver.example.com来运行rsync。

[root@tecmint]# useradd tecmint
[root@tecmint]# passwd tecmint

在这里,我创建了一个用户“howtoing”并为该用户分配了一个密码。

第 3 步:测试 Rsync 设置

现在是在备份服务器(即 backup.example.com)上测试 rsync 设置的时候了,为此,请键入以下命令。

[root@backup www]# rsync -avzhe ssh [email :/var/www/ /var/www
样本输出
[email 's password:

receiving incremental file list
sent 128 bytes  received 32.67K bytes  5.96K bytes/sec
total size is 12.78M  speedup is 389.70

您可以看到您的 rsync 现在工作得非常好并且正在同步数据。我使用“/var/www”进行传输;您可以根据需要更改文件夹位置。

第 4 步:使用 SSH 无密码登录自动同步

现在,我们已经完成了 rsync 设置,现在是时候为 rsync 设置 cron 了。由于我们将使用 rsync 和 SSH 协议,ssh 将要求身份验证,如果我们不向 cron 提供密码,它将无法工作。为了让 cron 顺利运行,我们需要为 rsync 设置无密码 ssh 登录

在此示例中,我以 root 身份执行此操作,以保留文件所有权,您也可以为其他用户执行此操作。

首先,我们将在备份服务器(即 backup.example.com)上使用以下命令生成公钥私钥密钥。

[root@backup]# ssh-keygen -t rsa -b 2048

当您输入此命令时,请不要提供密码并单击 Enter 键空密码,这样 rsync cron 就不需要任何密码来同步数据。

样本输出
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
9a:33:a9:5d:f4:e1:41:26:57:d0:9a:68:5b:37:9c:23 [email 
The key's randomart image is:
+--[ RSA 2048]----+
|          .o.    |
|           ..    |
|        ..++ .   |
|        o=E *    |
|       .Sooo o   |
|       =.o o     |
|      * . o      |
|     o +         |
|    . .          |
+-----------------+

现在,我们的公钥私钥已经生成,我们必须与主服务器共享它,以便主Web服务器能够识别该备份计算机并允许其登录同步数据时无需询问任何密码。

[root@backup html]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email 

现在尝试使用“ssh ‘[email ‘”登录计算机,然后签入 .ssh/authorized_keys

[root@backup html]# [email 

现在,我们已经完成了共享密钥。要更深入地了解 SSH 无密码登录,您可以阅读我们的文章。

  1. 5 个简单步骤即可实现 SSH 无密码登录

第 5 步:安排 Cron 自动同步

让我们为此设置一个 cron。要设置 cron,请使用以下命令打开 crontab 文件。

[root@backup ~]# crontab –e

它将打开 /etc/crontab 文件以使用默认编辑器进行编辑。在此示例中,我编写了一个 cron 来每 5 分钟运行一次以同步数据。

*/5        *        *        *        *   rsync -avzhe ssh [email :/var/www/ /var/www/

上面的 cron 和 rsync 命令只是将“/var/www/”从主网络服务器同步到每个中的备份服务器 5 分钟。您可以根据需要更改时间和文件夹位置配置。要使用 RsyncCron 命令更具创意和自定义,您可以在以下位置查看我们更详细的文章:

  1. 在 Linux 中同步文件/文件夹的 10 个 Rsync 命令
  2. Linux 中的 11 个 Cron 调度示例