如何使用 Rsync 同步两个 Apache Web 服务器/网站
网络上有许多教程,教你如何使用不同的方法镜像或备份你的网络文件,我在这里写这篇文章供将来参考,在这里我将使用一个非常简单和通用的Linux命令来创建你网站的备份。本教程将帮助你使用“ Rsync ”在两个网络服务器之间同步数据。
使用Rsync创建Web 服务器镜像的目的是,如果您的主 Web 服务器发生故障,您的备份服务器可以接管,以减少网站停机时间。这种创建 Web 服务器备份的方式对于中小型 Web 企业来说非常好而且有效。
同步 Web 服务器的优点
使用 rsync 创建 Web 服务器备份的主要优点如下:
- Rsync 仅同步已更改的数据字节和块。
- Rsync 能够检查并删除备份服务器上已从主 Web 服务器删除的文件和目录。
- 它在远程复制数据时负责处理权限、所有权和特殊属性。
- 它还支持 SSH 协议以加密方式传输数据,以便您确保所有数据都是安全的。
- Rsync 在传输数据时使用压缩和解压缩的方法,消耗更少的带宽。
如何同步两个 Apache Web 服务器
让我们继续设置 rsync 来创建您的 Web 服务器的镜像。在这里,我将使用两台服务器。
主服务器
- IP地址:192.168.0.100
- 主机名:webserver.example.com
备份服务器
- IP地址:192.168.0.101
- 主机名:backup.example.com
步骤1:安装Rsync工具
在这种情况下,webserver.example.com的 Web 服务器数据将镜像到backup.example.com上。首先,我们需要使用以下命令在两台服务器上安装Rsync 。
[root@example]# yum install rsync [On Red Hat based systems] [root@example]# apt-get install rsync [On Debian based systems]
第 2 步:创建用户来运行 Rsync
我们可以使用root用户设置 rsync ,但出于安全原因,您可以在主网络服务器(即webserver.example.com)上创建一个非特权用户来运行 rsync。
[root@example]# useradd example [root@example]# passwd example
这里我创建了一个用户“ example ”,并为该用户分配了一个密码。
步骤3:测试Rsync设置
现在是时候在您的备份服务器(即backup.example.com )上测试您的 rsync 设置了,请输入以下命令。
[root@backup www]# rsync -avzhe ssh example@webserver.example.com:/var/www/ /var/www
示例输出
example@webserver.example.com'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 了。由于我们将使用SSH协议的 rsync,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 root@backup.exmple.com The key's randomart image is: +--[ RSA 2048]----+ | .o. | | .. | | ..++ . | | o=E * | | .Sooo o | | =.o o | | * . o | | o + | | . . | +-----------------+
现在,我们的公钥和私钥已经生成,我们必须与主服务器共享它,以便主网络服务器能够识别这台备份机器,并允许它在同步数据时无需密码即可登录。
[root@backup html]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@webserver.example.com
现在尝试使用“ ssh 'root@webserver.example.com '”登录机器,并检查.ssh/authorized_keys。
[root@backup html]# root@webserver.example.com
现在,我们完成了密钥共享。要了解有关SSH 无密码登录的更多详细信息,您可以阅读我们的文章。
步骤5:安排Cron自动同步
让我们为此设置一个 cron。要设置 cron,请使用以下命令打开 crontab 文件。
[root@backup ~]# crontab –e
它将打开 /etc/crontab 文件,使用默认编辑器进行编辑。在此示例中,我编写了一个 cron,每 5 分钟运行一次以同步数据。
*/5 * * * * rsync -avzhe ssh root@webserver.example.com:/var/www/ /var/www/
上述 cron 和 rsync 命令每5 分钟将“ /var/www/ ”从主Web 服务器同步到备份服务器。您可以根据需要更改时间和文件夹位置配置。要使用Rsync和Cron命令进行更多创意和自定义,您可以查看我们更详细的文章: