使用rsync镜像您的网站

使用rsync镜像您的网站 本教程将介绍如何将您的网站从主Web服务器镜像到备份服务器,可以采取ove ...

这是一个“复制和粘贴” HowTo! 遵循本教程的最简单的方法是使用命令行客户端/ SSH客户端(如PuTTY for Windows),并简单地复制和粘贴命令(除了必须提供自己的信息,如IP地址,主机名,密码... )。 这有助于避免打字错误。

用rsync镜像您的网站

版本1.0
作者:Falko Timme

本教程将介绍如何将您的网站从主Web服务器镜像到主服务器发生故障时可以接管的备份服务器。 我们使用这个工具rsync ,我们使它运行在一个cron作业,检查每x分钟,如果有更新的镜像上。 因此,如果备份服务器必须接管,通常应该是最新的。

rsync只会更改已更改的文件,因此,只要运行rsync ,就不需要传输5 GB的数据。 它只反映新的/已更改的文件,并且还可以从主服务器上已删除的镜像中删除文件。 除此之外,它可以保留镜像文件和目录的权限和所有权; 为了保护所有权,我们需要以root身份运行rsync ,这是我们在这里做的。 如果主服务器上的权限和/或所有权更改, rsync也将在备份服务器上进行更改。

在本教程中,我们将通过更安全的SSH来隧道rsync ; 这也意味着您不必在防火墙中为rsync打开另一个端口 - 只要端口22(SSH)打开就足够了。 问题是SSH需要用于登录的密码,如果要作为cron作业运行rsync ,则不太好。 需要密码需要人为的互动,这不是我们想要的。

但幸运的是有一个解决方案:使用公钥 。 我们创建一对密钥(在我们的备份服务器mirror.example.com上 ),其中一个密钥保存在远程系统( server1.example.com )上的文件中。 之后,当我们运行rsync时,我们将不再提示输入密码。 这也包括正是我们想要的cron工作。

正如您可能已经从我迄今为止所写的那样猜到的,这个概念是我们直接从mirror.example.com启动server1.example.com的镜像 ; server1.example.com不需要做任何事情来镜像。

我将在这里使用以下设置:

  • 主服务器: server1.example.comserver1 ) - IP地址: 192.168.0.100
  • 镜像/备份服务器: mirror.example.com镜像 ) - IP地址: 192.168.0.175
  • 要镜像的网站位于server1.example.com上的/ var / www

rsync仅用于镜像文件和目录; 如果要镜像您的MySQL数据库,请查看这些教程:

我想先说说这不是建立这样一个系统的唯一途径。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!

1安装rsync

首先我们必须在server1.example.commirror.example.com上安装rsync 。 对于Debian系统,它看起来像这样:

server1 / mirror:

(我们做root!)

apt-get install rsync

在其他Linux发行版上,您可以使用yum (Fedora / CentOS)或yast (SuSE)来安装rsync

2在server1.example.com上创建一个非特权用户

现在,我们在server1.example.com上创建一个名为someuser的非特权用户,将由rsyncmirror.example.com上使用镜像目录/ var / www (当然, someuser必须在server1上的/ var / www上具有读取权限.example.com )。

server1:

(我们做root!)

useradd -d /home/someuser -m -s /bin/bash someuser

这将创建一个用户的主目录/ home / someuser和登录shell / bin / bash的用户 (重要的是someuser具有有效的登录shell - 像/ bin / false不起作用)。 现在给一些用户一个密码:

passwd someuser

3测试rsync

接下来我们在mirror.example.com上测试rsync 。 作为根我们这样做:

镜子:

rsync -avz -e ssh someuser@server1.example.com:/var/www/ /var/www/

你应该看到这样的东西。 回答

The authenticity of host 'server1.example.com (192.168.0.100)' can't be established.
RSA key fingerprint is 32:e5:79:8e:5f:5a:25:a9:f1:0d:ef:be:5b:a6:a6:23.
Are you sure you want to continue connecting (yes/no)?

<-- yes

然后输入一些用户的密码,您应该看到server1.example.com/ var / www目录镜像到mirror.example.com上的/ var / www

您可以在两台服务器上检查:

server1 / mirror:

ls -la /var/www

您应该看到所有的文件和目录已镜像到mirror.example.com ,文件和目录应该具有与server1.example.com上相同的权限/ 所有权

4在mirror.example.com上创建密钥

现在我们在mirror.example.com上创建私钥/公钥对:

镜子:

(我们做root!)

mkdir /root/rsync
ssh-keygen -t dsa -b 1024 -f /root/rsync/mirror-rsync-key

你会看到这样的东西:

Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase): [press enter here]
Enter same passphrase again: [press enter here]
Your identification has been saved in /root/cron/mirror-rsync-key.
Your public key has been saved in /root/cron/mirror-rsync-key.pub.
The key fingerprint is:
68:95:35:44:91:f1:45:a4:af:3f:69:2a:ea:c5:4e:d7 root@mirror

重要的是,您不要输入密码,否则在没有人工交互的情况下,镜像将无法正常工作,因此只需按Enter键即可

接下来,我们将公钥复制到server1.example.com

镜子:

(但是,我们以root身份执行此操作)

scp /root/rsync/mirror-rsync-key.pub someuser@server1.example.com:/home/someuser/

公共密钥mirror-rsync-key.pub现在应该可以在server1.example.com上的/ home / someuser使用。