如何使用 Rsync 同步两个 Web 服务器

管理 Web 服务器时,确保数据安全并在发生故障时能够快速恢复至关重要。备份和镜像 Web 服务器数据的最可靠方法之一是使用。

同步该工具有助于同步两个服务器之间的文件和目录,使其成为创建 Web 服务器数据的备份和镜像的理想选择。

在本文中,我们将指导您完成使用 rsync 将 Web 服务器与备份服务器同步的过程。我们也会使用自动化同步过程。

先决条件

在我们开始之前,请确保您具备以下条件:

两台服务器

  • 主网络服务器:IP地址192.168.0.100, 主机名webserver.example.com
  • 备份服务器: IP 地址192.168.0.101, 主机名backup.example.com

已安装的软件

两台服务器都应该安装 rsync,如果没有,您可以通过运行以下命令来安装它:

sudo apt install rsync         [On Debian, Ubuntu and Mint]
sudo yum install rsync         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/rsync  [On Gentoo Linux]
sudo apk add rsync             [On Alpine Linux]
sudo pacman -S rsync           [On Arch Linux]
sudo zypper install rsync      [On OpenSUSE]    
sudo pkg install rsync         [On FreeBSD]

SSH 访问

应在两台服务器之间启用 SSH 访问,这将用于使用 SSH 密钥设置无密码登录,以实现平稳的自动化。

第 1 步:设置无密码 SSH 登录

自动化同步过程计划任务,我们需要从 Web 服务器设置无密码 SSH 登录(主服务器)到备份服务器,这将允许 rsync 运行而无需每次都输入密码。

登录主网络服务器webserver.example.com)并生成 SSH 密钥,并确保接受默认文件位置并将密码留空。

ssh-keygen -t rsa -b 2048

接下来,使用ssh-copy-id命令将公钥复制到备份服务器:

ssh-copy-id 

代替user与用户名备份服务器。系统将提示您输入密码一次,但之后将设置无密码登录。

最后,通过登录来测试连接主网络服务器备份服务器:

ssh 

如果无需输入密码即可登录,则说明设置成功。

现在我们已经设置了无密码 SSH,我们可以使用同步将Web服务器的数据同步到备份服务器。 Web 服务器的数据通常存储在/var/www/html/目录,我们将使用该目录进行备份和镜像。

基本 Rsync 命令

要执行一次性备份,请在计算机上运行以下命令主网络服务器webserver.example.com):

rsync -avz /var/www/html/ :/path/to/backup/directory

上述命令的解释:

    • -a代表“存档模式” 它保留权限、时间戳和其他文件属性。c
    • -v启用详细输出,以便您可以看到正在传输的文件。
    • -z启用压缩以减少数据传输大小。

将文件同步到备份目录

代替/path/to/backup/directory与实际路径备份服务器您要存储备份的位置。

例如:

rsync -avz /var/www/html/ :/backup/webserver

镜像 Web 服务器目录

如果要镜像该目录(即使备份与源完全相同),可以使用--delete选项:

rsync -avz --delete /var/www/html/ :/backup/webserver

这将删除备份目录中不再存在于 Web 服务器上的所有文件,确保两个目录相同。

第 3 步:使用 Cron 自动备份

为了确保定期备份,我们可以安排同步使用cron命令自动运行,这样,备份过程就会在指定的时间运行,比如每天的午夜。

打开 crontab 文件主网络服务器webserver.example.com)通过运行:

crontab -e

要安排备份在每天午夜运行,请将以下行添加到 crontab:

0 0 * * * rsync -avz --delete /var/www/html/ :/backup/webserver

保存 crontab 文件并退出。 cron 作业现在将自动运行于中午 12:00每天。您可以根据需要调整时间。

第 4 步:验证备份

设置 cron 作业后,通过执行这些检查来验证备份是否正常工作非常重要。

您可以检查系统日志来验证 cron 作业是否按预期运行:

grep CRON /var/log/syslog

登录备份服务器backup.example.com)并检查文件是否在/backup/webserver目录与主 Web 服务器上的文件匹配 (/var/www/html/)。

您还可以通过删除上的文件来执行测试主网络服务器并验证在下一次 rsync 运行后它是否已从备份目录中删除。

结论

与 Web 服务器同步同步备份和镜像是确保数据安全且易于恢复的强大而有效的方法。

通过设置无密码 SSH 登录并自动化该过程计划任务,您可以运行定期备份,无需任何手动干预。

此设置有助于维护 Web 服务器数据的最新备份,并确保您的网站即使在服务器发生故障时也保持可用。