rsync+inotify实现同步数据

简介:

1、rsync

man一下sync,就会发现:sync-flush file system buffers,它是一个把缓冲区中的数据同步到文件系统中的一个命令;而rsync其实就是remote rsync,它是一个远程同步工具,兼具cp和scp的功能,rsync命令的使用几乎和scp是一样一样的。rsync是通过超级守护进程xinetd进行触发同步的。

1)优点:与cp和scp相比来说,rsync更快,更安全,支持增量备份。rsync在数据同步的过程中,不像cp一样全部都拷贝,而是先去比对特征码,只有不一样的才会去拷贝,如果一样了,就不需再做多余操作。通过使用rsync+crontab可以解决对实时性要求不是太高的场景。

2)缺点:在这个大数据年代,如果数据量非常大,你每做一次任务计划,rsync都会先去遍历目标目录,把所有数据做一次特征码比对,然后进行差量传输,这个过程会是很漫长的,对于那些要求实时性更新比较高的企业来说,无疑是一场噩梦。rsync+inotify组合能够实时的去监控我们的文件系统,只有在数据改变时才会触发它去同步!

rsync有4种模式

   1.本地模式。

   2.远程shell模式

   3.查询模式

   4.C/S模式

2、inotify

Inotify 是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件。

3、rsync+inotify 好处

1)服务器性能:rsync+crontab会定时去检查是否有文件更新,这势必会造成服务器性能下降;而rsync+inotify组合是触发式更新,只有在数据文件有变化时,才会去更新,因此相对前者而言,是提高了服务器性能。

2)数据实时性:rsync+crontab是周期性任务计划,不能保证数据的实时性;rsync+inotify组合是触发式更新,只要有数据变化,就立刻同步更新。

rsync命令是快速、多用、远程和本地文件复制工具;

命令语法格式:

Local:  rsync [OPTION...] SRC... [DEST]

Access via remote shell:

  Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]

  Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

Access via rsync daemon:

Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]

    rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]

Push: rsync [OPTION...] SRC... [USER@]HOST::DEST

   rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

选项:

-v, --verbose:冗长信息;

-r, --recursive:对目录递归;


1.本地模式

rsync -rv /etc/passwd ./  

拷贝passwd 到当前目录 

2.远程shell模式

rsync -rv /etc/passwd 172.18.11.12:/tmp  

把passwd拷贝到远程主机上,类似于scp命令需要用户密码;

3.列表模式

rsync -r 172.18.11.12:/tmp 

查看远程目录下的文件


重点是第四种模式,实现数据同步:

4.C/S模式,数据同步:

实验环境:

master:172.18.11.11

slave:172.18.11.113



实验目标:

实现master主机的/var/ftp/目录下只要有文件变化(可定义),会实时同步到slave主机上的/home/ftp目录下。

如果不是用root用户,首先确保各主机创建相同的用户;


在slave端:

]# vim /etc/rsyncd.conf

wKiom1c9qEzByHpkAABcd49QHok057.png

建立密码文件 /etc/rsyncd.pass 如下格式,并确保权限为600或400

]# vim /etc/rsyncd.pass

wKioL1c9qZyg9OZjAAAMZbeM8co553.png

]# chmod 600 /etc/rsyncd.pass


启动守护进程

]# rsync --daemon



]# netstat -tnlp|grep rsync

查看873端口监听;


在master端:

]# vim /etc/rsyncd.pass

wKiom1c9qSrxOfJ5AAAKn5vwmq8889.png

注意:此密码文件只输入在slave端设置的密码即可;


手动测试,master端passwd文件是否能同步到slave端设定的目录中;

]# rsync -avz /var/ftp/pub/passwd root@172.18.11.113::ftp --password-file=/etc/rsyncd.pass

解释:

root为slave端指定的用户;

172.18.11.113为slave端地址;

/etc/rsyncd.pass为存放slave端设置的指定用户的密码;


可在slave端的同步目录查看是否收到passwd文件;


安装inotify-tools

]# yum -y install inotify-tools


编写监控脚本并加载到后台执行:

]# vim /root/rsync.sh 

wKiom1i_ifCSsu2wAABuiIlbzvw645.png

将脚本加入后台执行

]# sh rsync.sh &  


实时同步测试

在master端:

]# for a in `seq 200`;do touch $a;done

创建200个文件;

]# ll  --time-style=full-iso

wKiom1c9rzzg3yuJAACvkozzoYE307.png


再到slave端查看:

]# ll  --time-style=full-iso /home/ftp

wKioL1c9sKCDKy63AADiw2jNsIM594.png

实现了数据实时同步。











本文转自 crystaleone 51CTO博客,原文链接:http://blog.51cto.com/linsj/1775162,如需转载请自行联系原作者
目录
相关文章
|
5月前
|
监控 安全 Unix
Rsync+Inotify实现数据实时同步
Rsync+Inotify实现数据实时同步
|
监控
inotify+rsync实现实时同步数据
inotify+rsync实现实时同步数据
109 0
|
12月前
|
监控 Linux
rsync+inotify实时同步
rsync+inotify实时同步
|
监控 安全 Shell
使用 inotify 和 rsync 实现文件实时同步
使用 inotify 和 rsync 实现文件实时同步
301 1
|
监控 安全 Shell
inotify+rsync实现实时同步
1.1 什么是实时同步:如何实现实时同步 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化 发现目录中数据产生变化,就利用rsync服务推送到备份服务器上 1.2 实现实时同步的方法    inotify+rsync 方式实现数据同步    sersync 方式实现实时数据同步 详情参照:http://www.cnblogs.com/clsn/p/7707828.html 1.2.1 实时同步原理介绍   1.3 inotify+rsync 方式实现数据同步 1.3.1 Inotify简介   Inotify是一种强大的,细粒度的。
1847 0