rsync+inotify实现数据同步传输

rsync简介:

rsync:remote sync,是一款快速增量备份备份工具,能同步更新两处计算机的文件与目录,并适当利用差分编码以减少数据传输。rsync中一项与其他大部分类似程序或协议中所未见的重要特性是镜像对每个目标只需要一次发送。rsync可拷贝/显示目录属性,以及拷贝文件,并可选择性的压缩以及递归拷贝。还能通过脚本或crontab计划任务这执行自动备份。

特点:

可以镜像保存整个目录树或文件系统;

较高的数据传输效率;

可以借助于ssh实现安全数据传输;

支持匿名传输;

rsync命令的工作模式:

shell模式:也称作本地模式;

远程shell模式:可以利用ssh协议承载其远程传输过程;

列表模式:仅列出源中的内容,-nv

服务模式:此时rsync工作为守护进程,能接收客户端的数据同步请求;

rsync命令的选项:

-n:同步测试,不执行真正的同步过程;
-v:详细输出模式
-q:静默模式
-c:checksum,开启校验功能
-r:递归复制
    注意:rsync命令中,如果源路径是目录,且给复制路径时末尾有/,则会复制目录中的内容,而非目录本向;如果末尾没有/,则会同步目录本身及目录中的所有文件;目标路径末尾是否有/无关紧要;

-a:归档,保留文件的原有属性;
-p:保留文件的权限;
-t:保留文件的时间戳;
-l:保留符号链接
-g:保留属组
-o:保留属主
-D:保留设备文件

-e ssh:使用ssh作为传输承载;
-z:压缩后传输;

--progress: 显示进度条
--stats: 显示如何执行压缩和传输

rsync同步数据时,需要扫描全部数据计算出增量部分,而后再同步增量数据,如果需要备份数据非常庞大,这样的扫描会非常耗时,使其变得低效;虽然可以通过crontab计划任务实现定期同步,但是也达不到实时同步的要求。此时可以利用inotify来解决此应用瓶颈。

inotify:是linux的内核特性,linux内核从2.6.13版本起引入该特性。通过inotify可以监控linux文件系统中添加、修改、、移动、重命名、删除等各种事件,利用这个内核接口,由于notify是内核功能,因此需要使用时,通过第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件。



实例:rsync+inotify实现数据同步传输

实验环境:

rsync服务器:

IP:192.169.1.10

操作系统:CentOS6.7 x86_64

客户端:

IP:192.168.1.11

操作系统:CentOS6.7 x86_64

说明:客户端部署inotify-tools,监控指定目录的文件同步至服务器;

实验过程:

rsync服务器模式配置;

安装rsync和守护进程:

# yum install rsync xinetd

启用rsync:

# vim /etc/xinetd.d/rsync
> disable = no

为rsync提供配置文件:

默认没有配置文件,配置文件分两段,全局配置段1个,共享配置段多个;

# vim /etc/rsyncd.conf
> # Global Settings    :全局配置段;
> uid = nobody    :运行rsync用户;
> gid = nobody    :运行rsync组;
> use chroot = no    :关闭chroot;
> max connections = 10    :最大并发连接数;
> strict modes = yes    :开启严格模式;
> pid file = /var/run/rsyncd.pid    :pid文件位置;
> log file = /var/log/rsyncd.log    :日志文件位置;
> 
> # Directory to be synced   :共享配置段;
> [data]    :共享文件名;
> path = /data    :共享文件路径;
> ignore errors = yes    :忽略错误;
> read only = no    :不允许读;
> write only = no    :不允许写;
> hosts allow = 192.168.1.0/24   :白名单;
> hosts deny = *    :黑名单
> list = false    :不允许列出文件;
> uid = root    :运行rsync的用户,覆盖全局配置;
> gid = roo t    :运行rsync的组,覆盖全局配置;
> auth users = chencer    :用户认证;
> secrets file = /etc/rsyncd.passwd    :用户认证文件;

提供用户认证文件:用户为以逗号分隔的在rsyncd.passwd中存在用户名的列表,此文件不能允许其它用户有访问权限,且密码不能超过8个字符;

# vim /etc/rsyncd.passwd
> chencer:chencer
# chmod 600 /etc/rsyncd.passwd

启动服务:

# chkconfig rsync on
# service xinetd start
# ss -tnl | grep 873

监听于873/tcp端口;

客户端配置;

提供认证文件:仅需要密码;

# echo "chencer" > /etc/rsync.passwd
# chmod 600 /etc/rsync.passwd

测试同步:

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   
 
例如:
# rsync --password-file=/etc/rsync.passwd [email protected]::data/data
# rsync --password-file=/etc/rsync.passwdrsync://[email protected]/data /data
# rsync --password-file=/etc/rsync.passwd /[email protected]::data
# rsync --password-file=/etc/rsync.passwd /datarsync://[email protected]/data

安装inotify-tools:inotify-tools来自于epel源;

# yum install inotify-tools
# rpm -ql inotify-tools

inotifywait命令用法:

# inotifywait [options] file...
@file:排除指定文件;
常用选项:
-m:始终保持事件监听状态;
-r:递归查询目录;
-q:打印监控事件;
-e:指定监控的事件;
    modify:更改文件;
attrib:文件属性改变,权限、时间戳等;
move:文件移动到监控目录或移出监控目录;
create:创建文件;
delete:删除文件;
--timefmt:指定时间格式;
--format:指定时间输出格式;

提供rsync脚本:

# vim rsync.sh
> #!/bin/bash
> SRC=/data
> DEST=data
> HOST=192.168.1.10
> USER=chencer
> inotifywait -mrq --timefmt ‘%Y/%m/%d-%H:%M:%S‘ --format ‘%T %w %f %e‘ -e modify,attrib,move,create,delete $SRC | while read files
> do
>     rsync -azq --delete--password-file=/etc/rsync.passwd $SRC [email protected]$HOST::$DEST &> /dev/null
> done
# chmod +x rsync.sh

设置开机启动:

# echo "/root/rsync.sh &" >> /etc/rc.d/rc.local

同步测试:

在服务器上创建目录:

查看服务器:

同步成功。



结语:

至此rsync+inotify实现数据同步传输配置完成;以上为本人学习整理内容,试验中如有遗漏和失误,欢迎各路大神来喷。

时间: 2024-10-08 10:28:08

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

基于rsync+inotify实现数据实时同步传输

前言 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,但随着文件数量的增大和实时同步的要求,rsync已不能满足需求,随之rsync+inotify便应运而生.本文将讲解rsync的基础知识和如何基于rsync+inotify实现数据实时同步传输. rsync相关介绍 rsync(remote sync)是一款快速增量备份工具(远程同步),支持本地复制,或者与其他SSH(安全传输).rsync主机同步.

sersync基于rsync+inotify实现数据实时同步

一.环境描述 需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步 主服务器A:192.168.1.23 从服务器B:192.168.1.243 实时同步/var/atlassian目录到从服务器. 二.实施 1.从服务器192.168.1.243 rsync服务搭建 1.1安装软件包 wget http://rsync.samba.org/ftp/rsync/src/rsync-3.1.1.tar.gz tar xf r

rsync+inotify 实现数据的实时备份

我这个人写一些东西难免要发一番感慨,今天做rsync+inotify实现实时备份,做了好长时间没做出来,这段时间我看了好多博文还有一些视频,但自己做的时候还是没做出来,非常郁闷,就拿起书慢慢的看起来,最终我把思路整理好,又重新试验了一遍终于成功了.是的,你百分之九十的时间在实践,而剩下百分之十的时间才能到达成功,坚持加再看一遍很重要. 我先整理一下大致思路,如有时间,我再整理完整的文档出来. 1.先在两台主机里面安装rsync. 2.在服务节点上配置rsync. 3.在内容发布节点上安装inot

利用rsync+inotify实现数据同步

利用rsync+inotify实现数据同步 一.rsync概念: rsync是Linux系统下文件同步可数据传输的工具,采用rsync算法使客户机与服务器,主服务器与 备份服务器数据同步.rsync也能实现中断后恢复传输.rsync支持增量备份. 二.rsync的模式: 1.本地模式. 2.远程shell模式 3.查询模式 4.C/S模式 安装rsync: tar xvf rsync-3.0.9.tar.gz cd rsync-3.0.9 ./configure make && make

rsync+inotify实时数据同步单目录实战

rsync+inotify实时数据同步单目录实战 inotify是一个强大的.细粒度的.异步的文件系统事件监控机制,linux内核从2.6.13起加入了inotify支持,通过inotify可以监控文件系统中添加.删除.修改.移动等各种事件,利用这个内核接口,第三方软件可以监控文件系统下文件的各种变化情况,而inotify-tools正是实施监控的软件. inotify配置是建立在rsync服务基础上的配置过程 操作系统 主机名 网卡eth0 默认网关 用途 [email protected]

rsync+inotify实时数据同步多目录实战

rsync+inotify实时数据同步多目录实战 inotify配置是建立在rsync服务基础上的配置过程 操作系统 主机名 网卡eth0 默认网关 用途 [email protected] 192.168.1.111 192.168.1.1 Rsync服务端 [email protected] 192.168.1.121 192.168.1.1 Rsync 节点 子网掩码均为255.255.255.0 具体需求: 要求在58server1上以rsync守护进程的方式部署rsync服务,使得[e

rsync + inotify 实现数据时时同步,和跨系统实现数据同步。

一.rsync客户端与服务端结构图: 日常维护中,数据备份算是比较基本的一个了,rsync很好的解决了繁琐的数据时时同步,不需要手动指定变化的数据,而是由rsync自动检测,发现数据不一致时,就开始备份或者推送到其他rsync主机上.inotify是linux监控文件变化的监控工具,可以配合rsync更好的完成工作.很多公司操作系统可能都是不统一的,上面就又添加的一个windows的主机,已实现将在windows主机上将linux主机中的数据拉取到win主机上. 二.rsync简介. 1.)rs

CentOS6.6 rsync+inotify实现数据时时备份

rsync+inotify实现数据时时备份 注意:rsync的daemon模式已提前配置好了,只需要配置inotify即可. 基本环境   系统版本 主机名 IP地址 角色 备份/监控目录 CentOS  6.6 backup 10.0.0.10 rsync服务端 /backup CentOS  6.6 nfs-server 10.0.0.7 rsync客户端 /data inotify安装配置 查看系统是否支持inotify,显示以下三个文件表示支持 [[email protected] to

通过rsync+inotify实现数据实时备份同步

一.环境描述 测试环境 需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步 环境描述: 主服务器172.26.7.50 ,从服务器172.26.7.51 实时同步/home/ 及/download 目录到从服务器 二.实施方法 1.从服务器172.26.7.51 rsync服务搭建 1.1下载软件包至从服务器 下载地址:http://rsync.samba.org/ftp/rsync/src 可根据环境需求下载相应的软件