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目录下的内容已经不一样了:
再次同步时/boot与/todir一致,并确认同步结果;
步骤二:验证-a -v -n --delete 选项的含义
1,验证-a选项
当目录1包含文件夹时,若缺少-a或-r选项则文件夹会被忽略:
添加-a后才会执行同步
类似的情况,当目录1中的数据出现权限,归属,修改时间等变化时,若文件内容不变默认不会同步,若希望目录2也同步这些变化,需要-a选项
2,验证-v选项
创建测试目录及文档
添加-v选项时,可以看到操作细节信息,比如第一次同步时:
在目录/fdir/添加2.txt文件,在次同步信息:
确认目录1与目录2的内容一致:
再次跟踪同步信息,已经无需传输文件:
3,验证-n选项
将-n -v选项合用,可以模拟同步过程,显示需要做那些操作(但并不真的同步)
在目录/fdir下新建文件3.txt,测试同步操作:
去掉-n才能真正同步:
验证--delete选项:
rsync同步操作默认只是将目录1的数据同步到目录2,但如果目录2存在多余的文件却并不会去除,除非添加--delete选项:
在目录/fdir,/tdir已经同步完成后,删除/tdir/2.txt文件再次同步:
这种情况添加--delete选项再次执行同步,两个目录内容就一致了
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+ssh同步操作:
1,从远程主机rsync2下载/etc/passwd文件到当前目录
2,将远程主机rsync2的/boot/目录同步为本地的/fromssh
3,将本机的/etc目录同步到远程主机rync2的/opt下
4,在远程主机查看同步结果
3,配置rsync服务端
3.1 问题:
在主机rsyn1上配置rsync同步资源,完成以下任务:
1,将/usr/src目录配置为rsync共享,共享名为tools,仅允许用户ruser以密码123访问
2,启动rsync服务,并将其设置为开机自启
3.2步骤
步骤一:建立rsync账号文件
1,建立账号记录
2,控制账号文件权限(服务端严格模式有要求)
步骤二:
1,确保被共享的目录可用
2,建立rsyncd.conf配置文件,文件默认全部注释,以下内容需要自己写入
步骤三:启用srync服务端
1,启动系统服务rsync,并设置开机自启,检查服务监听状态
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共享(无需密码)
使用以下两种都可以
2,列出指定的rsync共享目录下有那些内容,访问内容时要求用户验证,否则失败
当输入正确的密码仍访问失败,原因是rsync通信采用默认严格模式,要求其他人不能对账号密码文件有r权限,解决办法将服务端账号文件权限改为600
步骤二:将远程主机的rsync共享目录同步到本机
1,手动交互模式
将远程tools共享的资源同步到本机的/mysrc目录
2,自动交互模式
通过--password-file选项提供密码文件
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程序可用)
步骤二:测试inotifywait监控
1,开启监控任务,放置后台执行
[root@rsync1 ~]# inotifywait -mrq -e create,modify,move,attrib,delete /opt &
2,测试/opt目录下的新建,修改,改名,更改权限,删除文件等事件的响应消息
3,停止监控任务
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
向目录下提供一些测试文件
2,确认rsync2的目录内容
[root@rsync2 ~]# yum -y install httpd
初始目录没有内容
步骤二:为rsync2配置rsync1的ssh密钥对验证,实现免密交互
1,生成密钥对文件
[root@rsync1 ~]# ssh-keygen #出现提示一直回车
2,将当前用户的ssh公钥部署到远程主机
[root@rsync1 ~]# ssh-copy-id [email protected] #需要输入rsync2主机root用户密码
3,验证免密登录结果
步骤三:编写镜像同步脚本并测试结果
1,编写脚本文件/root/isync.sh,并执行脚本,查看确认脚本执行
2,测试同步效果,在rsync1上向/var/www/htm/下添加一个测试文件(触发同步)
3,在rsync2上检查/var/www/html/目录,内容与rsync1上的文件一致
4,测试结束后,在rsync1上停止监控任务