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...] [[email protected]]HOST:SRC... [DEST]

Push: rsync [OPTION...] SRC... [[email protected]]HOST:DEST

Access via rsync daemon:

Pull: rsync [OPTION...] [[email protected]]HOST::SRC... [DEST]

rsync [OPTION...] rsync://[[email protected]]HOST[:PORT]/SRC... [DEST]

Push: rsync [OPTION...] SRC... [[email protected]]HOST::DEST

rsync [OPTION...] SRC... rsync://[[email protected]]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目录下。

在slave端:

]# vim /etc/rsyncd.conf

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

]# vim /etc/rsyncd.pass

]# chmod 600 /etc/rsyncd.pass

启动守护进程

]# rsync --daemon

]# netstat -tnlp|grep rsync

查看873端口监听;

在master端:

]# vim /etc/rsyncd.pass

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

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

]# rsync -avz /var/ftp/pub/passwd [email protected]::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

将脚本加入后台执行

]# sh inotify.sh &

实时同步测试:

在master端:

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

创建200个文件;

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

再到slave端查看:

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

实现了数据实时同步。

时间: 2024-10-08 17:03:24

rsync+inotify实现同步数据的相关文章

2-3-2 rsync+inotify备份同步数据

RSYNC = Remote Sync 远程同步 高效,一定要结合shell 官网:https://rsync.samba.org Author: Andrew Tridgell, Wayne Davison, and others Andrew Tridgell是Samba项目的领导者和主要开发人员,同时还在参与开发rsync\Linux Kernel. 与SCP的比较:scp=无法备份大量数据,类似windows的复制 rsync=边复制 ,边统计,边比较 Rsync特性和优点 可以镜像保存

rsync + inotify 实时同步数据

简介 Rsync (remote sync)是一款开源.快速,多功能.可实现增量的本地或远程数据镜像同步备份优秀工具.它可通过 LAN/WAN 快速同步多台主机间的文件.rsync 当前由 rsync.samba.org 维护.rsync 使用所谓的"rsync演算法"来使本地和远程主机之间的文件达到同步,该算法只传送两个文件中的不同部分,而不是每次都整份传送,因此速度相当快. 特点:   1.可以镜像保存整个目录树或文件系统:   2.可实现增量同步,既只同步发生变化的数据,因此数据

CentOS5.8 x86_64下配置rsync+inotify即时同步文件

rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样就可以解决同步数据的实时性问题.rsync+inotify我在工作中会经常用到,大家部署这种时请注意以下方面: 一.rsync服务器的uid和gid请将nobody:nobody改为www:www,因为是考虑到我们的Nginx服务器是由www:www运行的,而其对应目录很多时候有写日志或其它相关写文

rsync+inotify实时同步环境部署记录

随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足.首先,rsync在同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的,并且正在发生变化的往往是其中很少的一部分,这是非常低效的方式.其次,rsync不能实时的去监测.同步数据,虽然它可以通过linux守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据可能出现不一致,无法在应

rsync+inotify实时同步案例

rsync+inotify实时同步案例 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的.而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式.其次,rsync不能实时的去监测.同步数据,虽然它可以通过linux守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务

rsync远程同步及rsync+inotify实时同步

rsync远程同步及rsync+inotify实时同步 思维代入 正确.有效的备份方案是保障系统及数据安全的重要手段.在服务器中,通常会结合计划性任务.shell脚本来执行本地备份.但有时候为了提高备份的可靠性,异地备份也是非常有必要的.那下面就给大家介绍一种异地远程备份的方法:rsync远程备份. rsync简介 rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份.保持链接和权限,且采用优化的同步算法,在传输前执行压缩,因此非常适用于异地备份.镜像服务等应用

配置rsync+inotify实时同步

配置rsync+inotify实时同步Linux从2.6.13版内核开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件的存取,删除,移动,修改内容及属性等.利用这个机制,可以实现文件异动警告,增量备份,针对目录或文件的变化及时做出响应. 将inotify机制与rsync工具结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份,否则处于静默等待状态,避免了按固定周期备份是存在的延迟性,周期过密等问题. 正因为inotify通知机制有Linux内

【转】CentOS5.6下配置rsync内网同步数据到外网

[转]CentOS5.6下配置rsync内网同步数据到外网 本文转自:http://www.linuxidc.com/Linux/2012-06/64070.htm 一.需求 卫士那边有一个需求,就是要把一台内网服务器的数据同步到外网的一台服务器上,之前我用的是rsync+intify-tool+ssh实现的实时同步更新,前几天我还在东莞出差,开发的人给我打电话说这两台服务器的数据不同步了,我上去检查一遍,原来是用来同步数据的这个系统账号被北京的同事修改,ssh免密码登陆失败了,所以数据同步不了

rsync+inotify实时同步方案

rsync+inotify实时同步,inotify可以实时监控本地文件或目录变化,当检测到本地文件变化,执行rsync同步命令,将变化的文件同步到其他服务器节点. 1.配置环境 3.在服务节点1.服务节点2.内容发布节点,都安装rsync软件:在内容发布节点再安装inotify实时监控软件.安装步骤建上篇. 4.编辑同步脚本 #!/bin/bash/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y' --format '%T %