概述
1、rsync(Remote Sync远程同步)
是一款开源的快速备份工具,可以在不同主机间镜像同步数据,支持本地复制,或与其他SSH、rsync主机同步,rsync应用广泛,大多数Linux都将其作为默认组件已安装。
2、组成
①发起端:负责发起rsync同步操作的客户机
②备份源:负责响应来自客户机rsync同步操作的服务器,可以是SSH备份源或rsync备份源
3、同步方式
①下行同步:备份源负责提供文档的原始位置;发起端应对该位置有读取权限
②上行同步:备份源负责提供文档的目标位置;发起端应对该位置有写入权限
4、inotify机制
①Linux内核从2.6.13开始提供inotify机制,可以监控文件系统的变动情况作出通知响应,如可以针对目录或文件的变化及时作出响应
②使用rsync工具与inotify机制相结合,可实现触发式实时同步
③inotify机制由内核提供,主要做本机监控,因此更适合上行同步
④辅助工具:inotify-tools
inotifywait:用于持续监控,实时输出结果
inotifywatch:用于短期监控,任务完成后再出结果
实验环境:
搭建两台WEB服务器以实现负载均衡,因此两台服务器的网站文档内容必须相同,使用rsync进行远程同步,需要结合inotify机制实现触发式的上行同步,保持两个站点内容一致。
服务器A:192.168.4.254,作为rsync发起端,/var/www/html为原始位置
服务器B:192.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用户公钥分发给服务器B的rput用户,并验证登陆
ssh-copy-id [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软件包,以便使用inotifywait、inotifywatch工具
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
chmod a+x rputsync.sh
注:inotifywait常用选项
-m 持续进行监控
-r 递归监控所有子对象
-q 简化输出信息
-e 指定要监控哪些事件类型,如modify、create、move、delete
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
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