首页 > 其他分享 >rsync配置和使用+inotify实时同步

rsync配置和使用+inotify实时同步

时间:2023-07-01 18:33:38浏览次数:157  
标签:rsync1 同步 inotify rsync 实时 todir root 目录

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 [email protected]    #需要输入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


标签:rsync1,同步,inotify,rsync,实时,todir,root,目录
From: https://blog.51cto.com/u_13399333/6600726

相关文章

  • 国标GB28181协议客户端开发(三)查询和实时视频画面
    国标GB28181协议客户端开发(三)查询和实时视频画面本文是《国标GB28181协议设备端开发》系列的第三篇,探讨了信息查询和实时视频在GB28181协议中的应用。首先,介绍了设备目录查询、设备信息查询和设备状态查询三个重要的信息查询功能,并详细解释了它们在协议中的信令交互流程。随后,深......
  • 关于内核实时补丁如何工作-How kernel live patching works
    kpatch内核补丁解决方案使用livepatch内核子系统将旧功能重定向到新功能,详细的过程及说明如下:The kpatch kernelpatchingsolutionusesthe livepatch kernelsubsystemtoredirectoldfunctionstonewones.Whenalivekernelpatchisappliedtoasystem,the......
  • 实时备份工具之inotify+rsync
    1.inotify简介inotify是一个从2.6.13内核开始,对Linux文件系统进行高效率、细粒度、异步地监控机制,用于通知用户空间程序的文件系统变化。可利用它对用户空间进行安全、性能、以及其他方面的监控。Inotify反应灵敏,用法非常简单,并且比cron任务的繁忙轮询高效得多。如果内......
  • opencv 采用实时摄像
    importcv2ascvcap=cv.VideoCapture(1)num=1while(cap.isOpened()):#检测摄像头是否开启ret,frame=cap.read()#读取每一针的数据#设置显示大小farm=cv.resize(frame,dsize=(1080,1080))#显示图像cv.imshow("2",farm)cv.waitKey(1)&0xFF#键盘检测#......
  • 基于Matlab的主动配电网实时无功优化 考虑风电和光伏的接入,采用多目标粒子群算法,以网
    基于Matlab的主动配电网实时无功优化考虑风电和光伏的接入,采用多目标粒子群算法,以网损和电压偏差为目标,优化变压器分接头、无功补偿器实现24小时无功优化,算例采用IEEE33进行仿真分析,对优化前后的电压和网损进行了分析。这段程序主要是一个多目标粒子群优化算法(MOPSO),用于解决电力......
  • 亿级用户实时互动,GaussDB(for Redis)带您沉浸式体验迷你世界
    摘要:GaussDB(forRedis)助您聊天不卡顿,畅玩更痛快爱冒险是人的天性,游戏创造的虚拟世界充分满足了人们这一需求,玩游戏也成为人们闲暇时光的重要放松方式之一。作为国内头部沙盒创意平台,《迷你世界》目前月活用户超过1亿,用户创作的场景地图超过2亿。持续增加的用户数,层出不穷的游戏地......
  • hedgedoc一个开源的实时协作文本编辑器支持markdown
    hedgedoc目录hedgedocdocker部署编辑docker-compose.yml运行小技巧批量邮箱注册(本地)邮箱注册(本地)功能开启与关闭参考引言:写接口文档时一些小修改要打开编辑器,还要重新发布一板到开发群组里。对于开发者这种懒人(bushi)是非常痛苦的,市面上支持在线编辑的软件有很多,支持mark......
  • 实时数据同步Inofity、sersync、lsyncd
    数据备份方案企业网站和应用都得有完全的数据备份方案确保数据不丢失,通常企业有如下的数据备份方案定时任务定期备份需要周期性备份的数据可以分两类:后台程序代码、运维配置文件修改,一般会定时任务执行脚本进行文件备份,然后配置Rsync工具推送到远程服务器备份对于数据库文件......
  • rsync备份任务练习
    06-备份任务实战今天的任务主要以实际备份任务入手,完成综合练习,完成对rsync的综合运用。先看需求再讲解再次动手实践  客户端需求客户端需求:1.客户端每天凌晨1点在服务器本地打包备份(/etc目录和/var/log目录)2.客户端备份的数据必须存放至以"主机名_ip地......
  • inotifywait 监控文件修改实时格式化文件
    我们在学习laravel过程中,从文档网页复制代码,会有一些比较麻烦的问题。以《Laravel10中文文档》|LaravelChina社区(learnku.com)为例 直接点复制按钮会带后,想测试的代码的话,还有处理use语句选中复制时,网站会向剪贴板追加来源信息,还得手动处理。 这些手动处理......