1,rsync基本用法

1.1 问题

 掌握远程同步的基本操作,使用rsync完成以下任务

1,将目录/boot同步到目录/todir下

2,将目录/boot下的文档同步到/todir下

3,在目录/boot下新增文件a.txt,删除/todir下的子目录grub2,再次同步时/todir 与/boot一致

1.2 方案

本地同步操作

rsync  [选项]   本地目录1  本地目录2

rsync  [选项]  本地目录1/  本地目录2

rsync同步工具的常用选项:

-n :测试同步过程,不做实际修改

--delete :删除目标文件夹内多余的文档

-a:递归模式,相当于-rlptgoD

-v:显示详细操作信息

-z:传递过程启用压缩/解压

1.3 步骤

步骤一:rsync同步基本操作

1,将目录/boot同步到目录 /todir下

[root@rsync1 ~]# ls /todir    #同步前

ls: 无法访问/todir: 没有那个文件或目录    

[root@rsync1 ~]# rsync -a /boot /todir     #将目录1作为目录2的子目录

[root@rsync1 ~]# ls /todir   #检查同步结果

boot

     2,将目录/boot下的文档同步到/todir下

[root@rsync1 ~]# rm -rf /todir/     #清理掉目录2

[root@rsync1 ~]# ls /todir

ls: 无法访问/todir: 没有那个文件或目录

[root@rsync1 ~]# rsync -a /boot/  /todir    #将目录1下的文档同步到目录2下  

[root@rsync1 ~]# ls /todir/        #检查同步结果

config-3.10.0-957.el7.x86_64                             initramfs-3.10.0-957.el7.x86_64.img

                        。。。。。。

3,同步效果测试

在目录/boot下新增文件a.txt,删除/todir下的子目录grub2:

查看发现现在/boot和/todir目录下的内容已经不一样了:

rsync配置和使用+inotify实时同步_子目录

再次同步时/boot与/todir一致,并确认同步结果;

rsync配置和使用+inotify实时同步_同步操作_02

步骤二:验证-a -v -n --delete 选项的含义

1,验证-a选项

当目录1包含文件夹时,若缺少-a或-r选项则文件夹会被忽略:

rsync配置和使用+inotify实时同步_同步操作_03

添加-a后才会执行同步

rsync配置和使用+inotify实时同步_服务端_04

类似的情况,当目录1中的数据出现权限,归属,修改时间等变化时,若文件内容不变默认不会同步,若希望目录2也同步这些变化,需要-a选项

2,验证-v选项

创建测试目录及文档

rsync配置和使用+inotify实时同步_服务端_05

添加-v选项时,可以看到操作细节信息,比如第一次同步时:

rsync配置和使用+inotify实时同步_同步操作_06

在目录/fdir/添加2.txt文件,在次同步信息:

rsync配置和使用+inotify实时同步_子目录_07

确认目录1与目录2的内容一致:

rsync配置和使用+inotify实时同步_服务端_08

再次跟踪同步信息,已经无需传输文件:

rsync配置和使用+inotify实时同步_子目录_09

3,验证-n选项

将-n -v选项合用,可以模拟同步过程,显示需要做那些操作(但并不真的同步)

在目录/fdir下新建文件3.txt,测试同步操作:

rsync配置和使用+inotify实时同步_同步操作_10

去掉-n才能真正同步:

rsync配置和使用+inotify实时同步_服务端_11

验证--delete选项:

rsync同步操作默认只是将目录1的数据同步到目录2,但如果目录2存在多余的文件却并不会去除,除非添加--delete选项:

在目录/fdir,/tdir已经同步完成后,删除/tdir/2.txt文件再次同步:

rsync配置和使用+inotify实时同步_服务端_12

这种情况添加--delete选项再次执行同步,两个目录内容就一致了

rsync配置和使用+inotify实时同步_子目录_13

2,rsync+ssh同步

2.1问题

掌握rsync与远程ssh资源的同步操作,使用rsync命令访问远程主机,完成以下任务;

1,查看远程主机的 / 目录下有那些子目录

2,从远程主机下载/etc/passwd文档到当前目录

3,将远程主机的/boot/目录同步为本地的/fromssh

4,将本机的/etc目录同步到远程主机的/opt目录下

2.2 方案

列出ssh服务端资源

rsync user@host:远程目录/

rsync+ssh远程同步操作:

rsync  [...]  user@host:远程目录   本地目录

rsync  [...]  本地目录  user@host:远程目录

2.3 步骤

按照如下步骤进行:

步骤一:列出远程主机的ssh资源

查看远程rsync2的根目录下有那些子目录:

rsync配置和使用+inotify实时同步_同步操作_14

步骤二:rsync+ssh同步操作:

1,从远程主机rsync2下载/etc/passwd文件到当前目录

rsync配置和使用+inotify实时同步_服务端_15

2,将远程主机rsync2的/boot/目录同步为本地的/fromssh

rsync配置和使用+inotify实时同步_子目录_16

3,将本机的/etc目录同步到远程主机rync2的/opt下

rsync配置和使用+inotify实时同步_子目录_17

4,在远程主机查看同步结果

rsync配置和使用+inotify实时同步_子目录_18

3,配置rsync服务端

3.1 问题:

在主机rsyn1上配置rsync同步资源,完成以下任务:

1,将/usr/src目录配置为rsync共享,共享名为tools,仅允许用户ruser以密码123访问

2,启动rsync服务,并将其设置为开机自启

3.2步骤

步骤一:建立rsync账号文件

1,建立账号记录

rsync配置和使用+inotify实时同步_子目录_19

2,控制账号文件权限(服务端严格模式有要求)

rsync配置和使用+inotify实时同步_子目录_20

步骤二:

1,确保被共享的目录可用

rsync配置和使用+inotify实时同步_服务端_21

2,建立rsyncd.conf配置文件,文件默认全部注释,以下内容需要自己写入

rsync配置和使用+inotify实时同步_服务端_22

步骤三:启用srync服务端

1,启动系统服务rsync,并设置开机自启,检查服务监听状态

rsync配置和使用+inotify实时同步_同步操作_23

4,访问rsync共享资源

4.1 问题

本例要求掌握rsync与远程rsync资源的同步操作,使用rsync命令访问主机rsync1,完成下列任务

1,列出远程主机提供的rsync资源,并查看内容

2,将远程主机的rsync共享目录同步到本机

4.2方案

列出rsync共享资源

rysnc  host://

rsync rsync://host

rsync+rysnc 远程同步操作:

rsync  [...] user@host::共享名  本地目录

rsync  [...] 本地目录 user@host::共享名

访问需要验证的rsync资源时,可以通过--password-file= 选项来加载提前准备好的密码文件(权限600,不要包括除密码外的其他字符),便于计划任务或者脚本使用

4.3步骤

步骤一:列出远程主机提供的rsync资源,并查看内容

1,列出有那些rsync共享(无需密码)

使用以下两种都可以

rsync配置和使用+inotify实时同步_服务端_24

2,列出指定的rsync共享目录下有那些内容,访问内容时要求用户验证,否则失败

rsync配置和使用+inotify实时同步_同步操作_25

当输入正确的密码仍访问失败,原因是rsync通信采用默认严格模式,要求其他人不能对账号密码文件有r权限,解决办法将服务端账号文件权限改为600

步骤二:将远程主机的rsync共享目录同步到本机

1,手动交互模式

将远程tools共享的资源同步到本机的/mysrc目录

rsync配置和使用+inotify实时同步_子目录_26

2,自动交互模式

通过--password-file选项提供密码文件

rsync配置和使用+inotify实时同步_子目录_27

5,使用inotifywait工具

5.1问题

安装inotify-tools工具,并针对文件夹/opt启用inotifywait监控,完成以下任务

1,当此目录下出现新建,修改,更改权限,修改文件等事件时给出提示

2,验证上述监控事件的效果

5.2 方案

inotifywaite监控操作

inotifywatei  [选项]  目标文件夹

inotifywait常用命令选项

-m:持续监控(捕获一个事件后不退出)

-r:递归监控,包括子目录及文件

-q:减少屏幕输出信息

-e:指定监视的modify,move,create,delete,attrib等事件类别

5.3步骤

步骤一:安装inotify-tools软件包

inotify-tools是一款google出的用于监控文件系统的软件,需先下载

官网地址:http://inotify-tools.sourceforge.net/

仓库地址:https://github.com/rvoicilas/inotify-tools/

此工具需要linux kernel内核版本2.6.13,可通过uname -a查看你的内核版本

1,安装gcc编译工具

[root@rsync1 ~]# yum -y install gcc

2,解压inotify-tools软件包

[root@rsync1 ~]#tar -zxf inotify-tools-3.13.tar.gz  -C /usr/src

3,进入解压之后的目录

[root@rsync1 ~]#cd /usr/src/inotify-tools-3.13/

4,编译并安装

[root@rsync1 inotify-tools-3.13]#./configure && make && make install

5,检查安装结果(inotifywait程序可用)

rsync配置和使用+inotify实时同步_服务端_28

步骤二:测试inotifywait监控

1,开启监控任务,放置后台执行

[root@rsync1 ~]# inotifywait  -mrq -e create,modify,move,attrib,delete /opt  &

2,测试/opt目录下的新建,修改,改名,更改权限,删除文件等事件的响应消息

rsync配置和使用+inotify实时同步_服务端_29

3,停止监控任务

rsync配置和使用+inotify实时同步_服务端_30

6,配置web镜像同步

6.1问题

为两台web服务器rsync1,rsync2,的网页文档目录配置镜像同步,主要基于inotifywait监控技术实现实时触发操作,完成下列任务:

1,以rsync1为发起方,原始目录为/var/www/html

2,以rsync2为同步目标,基于ssh免密验证

3,编写inotify+rsync同步脚本,验证实时同步效果

6.2方案

inotifywait与rsync的结合,主要思路

while  inotifywait监控操作

do

需要执行的rsync同步操作

done

6.3步骤

步骤一:为主机rsync1,rsync2部署同步目录

双方的目录均为/var/www/html,如果安装了httpd,此目录自动出现

1,确认rsync1的目录内容

[root@rsync1 ~]# yum -y install httpd

向目录下提供一些测试文件

rsync配置和使用+inotify实时同步_子目录_31

2,确认rsync2的目录内容

[root@rsync2 ~]# yum -y install httpd

初始目录没有内容

rsync配置和使用+inotify实时同步_服务端_32

步骤二:为rsync2配置rsync1的ssh密钥对验证,实现免密交互

1,生成密钥对文件

[root@rsync1 ~]# ssh-keygen      #出现提示一直回车

2,将当前用户的ssh公钥部署到远程主机

[root@rsync1 ~]# ssh-copy-id root@192.168.81.152    #需要输入rsync2主机root用户密码

3,验证免密登录结果

rsync配置和使用+inotify实时同步_同步操作_33

步骤三:编写镜像同步脚本并测试结果

1,编写脚本文件/root/isync.sh,并执行脚本,查看确认脚本执行

rsync配置和使用+inotify实时同步_子目录_34

2,测试同步效果,在rsync1上向/var/www/htm/下添加一个测试文件(触发同步)

rsync配置和使用+inotify实时同步_同步操作_35

3,在rsync2上检查/var/www/html/目录,内容与rsync1上的文件一致

rsync配置和使用+inotify实时同步_子目录_36

4,测试结束后,在rsync1上停止监控任务

rsync配置和使用+inotify实时同步_服务端_37