rsync 加 inotify 实现无缝数据同步

rsync 是远程差异同步数据的工具,把一份数据复制到另一台机器上。它的同步特性是,在整个文件域中,根据rsync算法计算文件的特征码,只同步有改变的文件,但在同步整个域的时候,会计算整个域中所有文件的特征,这样使得在文件数据过多情况下计算文件特性就花费了很多时间。如果不借助其它软件,rsync无法做到真正的即时同步数据。rsync可以对目录或整个文件系统做同步,可能借助ssh加密后安全传输,因为只同步差异数据,所以效率较高,还支持匿名传输等特性。rsync分为服务端和客户端,做为服务端随时等待客户端推送或拉取数据。rsync做为服务端时依赖超级守护进程xinetd为其监听tcp873端口。所以xinetd一定安装。

如果系统没有安装rsync,到http://rsync.samba.org/ 下载源码编译,或使用 yum -y install rsync 安装。

rsync 客户端使用的rsync命令使用

语法格式

拉取文件: rsync [OPTION...] [[email protected]]HOST::SRC... [DEST]

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

推送文件: rsync [OPTION...] SRC... [[email protected]]HOST::DEST

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

常用选项

-n: 测试同步,只做测试不真正同步数据。

-v:显示同步过程

-c:开启校验功能

-r:递归复制(如果同步目录,在目录后面不要写/。如果写/表示同步目录下的文件)

-a:归档同步,数据同步后会保留文件的原有属性

-p:保留文件的所有权限

-t:保留文件的时间戳

-l:保留符号连接

-o:保留文件的属主

-g:保留文件的属组

-D:保留设备文件

-e ssh :指定使用ssh协议做承载加密传输

-z : 传输时压缩数据传输

--progress : 显示传输进度条

--stats :显示如何压缩传输数据。

--delete : 删除多于文件

-q : 制止错误信息

rsync 服务器端配置文件 /etc/rsyncd.conf  。 分为两部分,第一段定义rsync做为服务运行的特性。第二部分定义rsync模块的特性,模块就是定义本地使用那个路径做为存储目录,和此模块的工作特性。此文件默认系统没有提供,需要手动创建。

# Global Settings   全局定义段,只能有一个。

uid = nobody            进程以那个用户身份运行

gid = nobody            进程运行的用户组

use chroot = no         运行rsync时是否支持chroot功能

max connections = 5  最多允许多少个客户端同时请求

strict modes = yes          是否启用严格模式

pid file = /var/run/rsyncd.pid    进程id文件的位置

log file = /var/log/rsyncd.log    日志文件的位置

# Directory to be synced     用来定义同步的目录 ,可以有多个。

[tools]

path = /data                存储同步的数据位置

ignore errors = yes      传输数据时是否忽略错误

read only = no            是否为只读

write only = no            是否为只写,如果只写别人不能看

hosts allow = 172.16.0.0/16            定义客户端的白名单

hosts deny = *             定义默认不允许访问本机的客户端,*表示全部。

list = false                    是允许例出文件,如果允许,值为ture

uid = root                    指定此共享使用那个用户身份运行

gid = root                    指定此共享使用那个用户组身份运行

auth users = USER1, USER2   指定可以通过rsync同步的用户

secrets file = /etc/rsyncd.passwd      指定验证用户的文件

启动服务时需要修改配置文件,让xinetd启动时为其监听服务。文件在/etc/xinetd.d/rsync

service rsync

{

disable = no     把此项的yes改为no

flags = IPv6

socket_type = stream

wait = no

user = root

server = /usr/bin/rsync

server_args = --daemon

log_on_failure += USERID

}

保存退出后重启xinetd服务,如果tcp的873端口处于监听状态,说明服务启动正常。

客户端做测试

==================================================================

inotify使用

inotify 是一个可以实时监视文件系统的工具,文件的创建,修改,删除,查看等动作都可以监视到。此功能需要2.6.13以上内核支持,包括2.6.13版本。inotify-tools 这个软件就是用来与内核的inotify交互的工具,借助它可以实时的监视指定文件一举一动。与sh脚本配置着使用,可以达到监控的效果。安装方法如下。

# wget http://nchc.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz

# tar -xf inotify-tools-3.13.tar.gz

# cd inotify-tools-3.13

# ./configure               这里没有指定安装路径,默认安装后可执行程序在 /usr/local/bin

# make && make install

# echo "fs.inotify.max_user_watches = 100000"  >> /etc/sysctl.conf  设定最大监视的文件数量

# sysctl -p   让设定的内核参数生效

inotify-tools安装后有两个执行文件

inotifywait,用来监视文件的变化

inotifywatch,用来统计文件系统访问的次数,监视文件的元数据

命令选项

-m, –monitor接收到一个事情而不退出,无限期地执行。默认的行为是接收到一个事情后立即退出。

-r, –recursive :监视一个目录下的所有子目录

-q, –quiet:指定一次,不会输出详细信息,指定二次,除了致命错误,不会输出任何信息。 指定一次,不会输出详细信息,指定二次,除了致命错误,不会输出任何信息。

-e , –event :只监听指定的事件。

事件有以下几种

==================================================================

配置一个rsync+inotify案例

1,节点1与节点2都为rsync服务器端,

2,分发服务器会实时把自己变化的数据推送到节点1和节点2上。

3,节点一与节点二的环境一样,模块名为html,共享的目录为/data

4,传输过程加密

操作过程---------------------------------------------------------------------

为了同步数据时不用输入密码,所以选择公钥认证。在分发服务器上生成密钥对儿。

# ssh-keygen -t rsa    这里没有设置密码,所以一路回车就可以。

# cd /root/.ssh/

# cat id_rsa.pub     查看公钥文件,并且复制

把红框中的文本复制到两台节点服务器上的/root/.ssh/authorized_keys文件中,如果没有需要手动创建。复制完成后为两台结点服务器编辑rsync的配置文件,内容如下。如没有rsync需要安装。

完成配置文件后重启xinetd服务。

分发服务器配置如上面安装完成后编辑以下脚本,让其自动同步数据。

# vim /bin/inotify.sh    内容如下

source  /etc/rsync.inotify

/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib /data | while read D E F

do

/usr/bin/rsync -ahqz -e ssh --delete ${Source}/ ${Host}::$Dest

/usr/bin/rsync -ahqz -e ssh --delete ${Source}/ ${Host1}::$Dest

done

#vim /etc/rsync.inotify   为上面的脚本文件提供配置文件,内容如下:提供配置文件是为了以后能够灵活扩展多个节点。

Source=/data

Host=172.16.2.10

Dest=html

Host1=172.16.2.15

# echo "/bin/inotify.sh &"  >> /etc/rc.d/rc.local                     #让脚本开机自动启动

# /bin/inotrfy.sh   启动脚本,第一次同步数据时需要输入yes。 所以先让它在前台运行

# cp /bin/i* /data                     复制点文件做测试,

到两台节点上查看,会有点延时。

# ls /data

到此完成

时间: 2024-08-13 12:51:17

rsync 加 inotify 实现无缝数据同步的相关文章

烂泥:rsync与inotify集成实现数据实时同步更新

本文首发于烂泥行天下. 上篇文章我们介绍了如何使用rsync同步文件,这篇文章我们再来介绍下,如何把rsync与inotify集成实现数据的实时同步. 要达到这个目的,我们需要分以下几个步骤: 1.rsync的优点与不足 2.inotify是什么 3.检测OS是否支持inotify 4.inotify相关参数详解 5.inotify监控的文件事件类似 6.inotify-tools是什么 7.安装inotify-tools 8.inotifywait使用详解 9.inotifywatch使用详解

rsync与inotify集成实现数据实时同步更新

本文转载:http://ilanni.blog.51cto.com/526870/1605200 把rsync与inotify集成实现数据的实时同步. 要达到这个目的,我们需要分以下几个步骤: 1.rsync的优点与不足 2.inotify是什么 3.检测OS是否支持inotify 4.inotify相关参数详解 5.inotify监控的文件事件类似 6.inotify-tools是什么 7.安装inotify-tools 8.inotifywait使用详解 9.inotifywatch使用详解

rsync、inotify实现web实时同步

. rsync.inotify实现web实时同步,布布扣,bubuko.com

rsync加inotify实现无间隔文件同步

一: 工具简介  rsync 它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限.时间.软硬链接等附加信息. rsync是用 "rsync 算法"来使本地和远程两个主机之间的文件达到同步,这个算法只传送文件的变化部分,而不是每次都整体传送,因此速度相当快. inotyify    inotify是Linux核心子系统之一,做为文件系统的附加功能,它可监控文件系统并将异动通知应用程序.于Linux核心2.6.13发布时,被正式纳入Linux内核.所以内核版本在2.

Linux下rsync+inotify实现实时数据同步

一. rsync 1. 什么是rsync rsync 是一个远程数据同步工具, 可以实现本主机内,或跨主机的数据同步.以服务运行时监听在TCP 873端口, rsync演算法可以达到只传送文件变化的部分,而不是整个都传送,因此速度相当的快,性能不错. 所以rsync通常可以作为备份工具来使用. 1.1 rsync基本特点: 1. 可以镜像保存整个目录树或文件系统 2. 可以很容易做到保持原来文件的权限.时间.软硬链接等; (通过rsync的一些参数, 如 -a) 3. 较高的数据传输效率 4.

rsync安装与配置使用 数据同步方案(centos6.5)

rsync + crond   ==定时数据同步 sersync(inotify)  + rsync  ==实时数据同步,利用rsync实现 ##应用场景 ..1 主备服务器之间同步数据定时    ==配合crond sersync inotify等实现 ##rsync的安装配置与使用 服务端 ..1 安装 centos6.5已经安装了rsync rpm -qa | grep rsync 如果没有,用下面两种方式之一安装 yum install rsync rpm -ivh rsyn.xxxxx

rsync 与 inotify 实现双机实时同步

折腾了一个上午,终于实现了rsync与inotify来实现双机实机的同步,现分享出来,操作步骤如下: A机:192.168.1.67 B机:192.168.1.68 先在A机上操作如下: 1:安装rsync 及inotify-tools 直接yum -y install rsync inotify-tools  安装就好.(inotify-tool需要安装epel的扩展源) 2:创建公钥(为了同步时不输入验证密码) 步骤如下: 1: ssh-keygen 2:scp -r /root/.ssh/

Rsync实现服务器间文件数据同步配置实例

> os: ubuntu 12.04 server > server: 192.168.33.201 > client: 192.168.33.202 ## 什么是rsync? > rsync是Unix下的一款应用软件,它能同步更新两处计算机的文件与目录,并适当利用差分编码以减少数据传输.rsync中一项与其他大部分类似程序或协议中所未见的重要特性是镜像对每个目标只需要一次传送.rsync可拷贝/显示目录属性,以及拷贝文件,并可选择性的压缩以及递归拷贝. ## rsync的安装 s

rsync 数据同步

rsync 是个优秀的数据同步工具,通过先进的校验算法,能够比较文件区别,实现增量传输,从而减少数据传输量. 环境:centos 6.3 x64 服务端:192.168.1.2 客户端:192.168.1.3 安装服务端 yum install rsync 创建配置文件/etc/rsyncd.conf uid = nobody gid = nobody use chroot = no max connections = 512 log file = /var/log/rsyncd.log pid