概述

1rsyncRemote Sync远程同步)

是一款开源的快速备份工具,可以在不同主机间镜像同步数据,支持本地复制,或与其他SSHrsync主机同步,rsync应用广泛,大多数Linux都将其作为默认组件已安装。

2、组成

①发起端:负责发起rsync同步操作的客户机

②备份源:负责响应来自客户机rsync同步操作的服务器,可以是SSH备份源或rsync备份源

3、同步方式

①下行同步:备份源负责提供文档的原始位置;发起端应对该位置有读取权限

②上行同步:备份源负责提供文档的目标位置;发起端应对该位置有写入权限

4inotify机制

Linux内核从2.6.13开始提供inotify机制,可以监控文件系统的变动情况作出通知响应,如可以针对目录或文件的变化及时作出响应

②使用rsync工具与inotify机制相结合,可实现触发式实时同步

inotify机制由内核提供,主要做本机监控,因此更适合上行同步

④辅助工具:inotify-tools

inotifywait:用于持续监控,实时输出结果

inotifywatch:用于短期监控,任务完成后再出结果

 

实验环境:

基于RHEL6使用rsync构建镜像网站_第1张图片

搭建两台WEB服务器以实现负载均衡,因此两台服务器的网站文档内容必须相同,使用rsync进行远程同步,需要结合inotify机制实现触发式的上行同步,保持两个站点内容一致。

服务器A192.168.4.254,作为rsync发起端,/var/www/html为原始位置

服务器B192.168.4.100,作为远程SSH服务器,/var/www/html为目标位置

注:两台服务器都需要安装配置Apache,请自行解决

 

一、配置SSH备份源(服务器B

1、创建备份用户rput,准备目录/var/www/html

useradd rput

passwd rput

mkdir –p /var/www/html         -----安装Apache时也会自动创建此目录

2、将目录/var/www/html属主改为rput,并设置ACL允许用户daemon写入

chown -R rput:rput /var/www/html

setfacl -R -m user:daemon:rwx /var/www/html

setfacl -R -m default:user:daemon:rwx /var/www/html

getfacl /var/www/html

3、配置并启用sshd服务,允许rput用户登陆

vi /etc/ssh/sshd_config

  allowusers rput

service sshd restart

 

二、使用rsync备份工具(服务器A

1、创建备份用户tom,创建目录/var/www/html,并添加测试网页文件

useradd tom

passwd tom

echo "welcome to benet." >  /var/www/html/index.html

2、将目录/var/www/html属主改为tom,并设置ACL允许用户daemon写入

chown -R tom:tom /var/www/html

setfacl -R -m user:daemon:rwx /var/www/html

setfacl -R -m default:user:daemon:rwx /var/www/html

getfacl /var/www/html

3、由tom用户创建SSH密钥对,并将密钥短语设为空,实现无交互登陆

su – tom

ssh-keygen -t rsa

4、将tom用户公钥分发给服务器Brput用户,并验证登陆

ssh-copy-id [email protected]

ssh [email protected]

注:①ssh-copy-id命令可以把本地的ssh公钥文件安装到远程主机对应的账户下

    ②也可使用scp命令将公钥文件拷贝至服务器,再导入到储存密钥的文件中

    ③例scp  ~/.ssh/id_rsa.pub  [email protected]:/tmp

        cat /tmp/id_rsa.pub >> /home/rput/.ssh/authorized_keys

5、使用rsync做上行同步

rsync -az --delete /var/www/html/   [email protected]:/var/www/html/

6、在服务器B查看同步的情况

ls /var/www/html

 

注:rsync命令的用法

①基本格式:rsync [选项] 原始位置 目标位置

②常用选项:

-a:归档模式,递归并保留对象属性,等同于 -rlptgoD

-v:显示同步过程的详细(verbose)信息

-z:在传输文件时进行压缩(compress

-H:保留硬连接文件

-r:递归模式,包含目录及子目录中所有文件

-l:对于符号链接文件仍然复制为符号链接文件

-p:保留文件的权限标记

-t:保留文件的时间标记

-g:保留文件的属组标记(仅超级用户使用)

-o:保留文件的属主标记(仅超级用户使用)

-D:保留设备文件及其他特殊文件

--delete:删除目标位置有而原始位置没有的文件

--checksum:根据对象的校验和来决定是否跳过文件

 

三、通过inotify机制实现实时同步(服务器A

1、安装inotify-tools软件包,以便使用inotifywaitinotifywatch工具

tar zxf inotify-tools-3.14.tar.gz -C /usr/src/

cd /usr/src/inotify-tools-3.14/

./configure

make && make install

2、编写脚本,根据inotifywait监控结果触发rsync同步操作

su - tom                    -------切换为备份用户tom

vi  rputsync.sh

基于RHEL6使用rsync构建镜像网站_第2张图片

chmod a+x rputsync.sh

注:inotifywait常用选项

-m 持续进行监控

-r 递归监控所有子对象

-q 简化输出信息

-e 指定要监控哪些事件类型,如modifycreatemovedelete

 

3、执行脚本,修改/var/www/html目录内容,验证同步效果

su - tom             ------必须以tom身份运行脚本

./rputsync.sh

cd /var/www/html

touch a b c

在目标位置(服务器B)查看同步的情况

ls /var/www/html

 

补充:配置rsync备份源

1、建立/etc/rsyncd.conf配置文件

vi /etc/rsyncd.conf

基于RHEL6使用rsync构建镜像网站_第3张图片

2、创建账户数据文件

vi /etc/rsyncd_users.db

backuper:123

chmod 600 /etc/rsyncd_users.db

3、启动rsync服务程序

rsync –daemon

netstat -anptu | grep rsync

vi /etc/xinetd.d/rsync

       disable = no

yum –y install xinetd

service xinetd start