Rsync+inotify 组合使用同步方案

1. Rsync+inotify组合起源

Rsync 远程同步工具通过rsync可以实现对远程服务器数据的增量备份同步,但rsync自身也有瓶颈,同步数据时,rsync采用可信算法对远程服务器的目标档进行对比,只进行差异同步。我们可以想象一下,如果服务器的档数量达到了百万甚至千万量级,那么档对比将是非常耗时间的一部分,这是非常低效率的方式,inotify的出现,可以缓解rsync不足之处,取长补短。

2. Inotify简介

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

特别说明:下面的inotify配置是建立在rsync服务器基础上的配置过程。

架构拓扑图--(单向实时同步)

在rsync推送文件先配置好

3.配置

a)[root@server2 home]# uname -r

2.6.18-164.el5

b)下载inotify-tools(https://github.com/rvoicilas/inotify-tools/downloads)

Wgat http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

c)[root@server2 home]# ll/proc/sys/fs/inotify/

-rw-r--r-- 1 root root 0 Jul 12 14:00max_queued_events

-rw-r--r-- 1 root root 0 Jul 12 14:00max_user_instances

-rw-r--r-- 1 root root 0 Jul 12 14:00max_user_watches

如果有这三个文件说明支持inotify

d)安装inotify

e)配置inotify脚本
vi /home/realtime_rsync.sh

#!/bin/sh
host01=server1
src=/var/log
dst=backup
user=rsync_backup
rsync_passfile=/etc/rsync.password
inotify_home=/usr/local/inotify
for i in $src $rsync_passfile "$inotify_home"/bin/inotifywait;doif [ -e $i ];thenecho $(date +%F_%H%M%S) $i is exist >>/home/real_inotify.logelseecho ckeck file or folder $i.fi
done
"$inotify_home"/bin/inotifywait -mrq --timefmt '%d%m%y-%H:%M' --format '%T %w%f' -e modify,create,delete,attrib $src |while read file
do
/usr/bin/rsync -aruz --delete $src/ $user@$host01::$dst --password-file=$rsync_passfile >/dev/null 2>&1

说明:host01是备份服务器的地址;

Src是需要备份的文件地址

Dst是目标服务器的模块名

Userrsync服务器虚拟用户名

Rsync_passfilersync服务密码文件

使用for循环来检查需要的目录和文件是否存在,然后通过inotify监控src文件是否有改动。如果有改动则触发同步命令rsync

e)sh –x /home/realtime_rsync.sh 调试模式

f)在/home/backup创建测试文件看是否同步。

#!/bin/sh
host01=server1
src=/home/backup
dst=backup
user=rsync_backup
rsync_passfile=/etc/rsync.password
inotify_home=/usr/local/inotify
for i in `seq 200`;do
#       dd if=/dev/zero of=$src/$i bs=1 count=10cp $src/exe.tar.gz $src/$i.tar.gz
#       sleep 0.5
done

测试日志

[root@server2 exe]# sh -x ./realtime_rsync.sh

+ host01=server1

+ src=/home/backup

+ dst=backup

+ user=rsync_backup

+ rsync_passfile=/etc/rsync.password

+ inotify_home=/usr/local/inotify

+ for i in '$src' '$rsync_passfile' '"$inotify_home"/bin/inotifywait'

+ '[' -e /home/backup ']'

++ date +%F_%H%M%S

+ echo 2013-07-13_194330 /home/backup is exist

+ for i in '$src' '$rsync_passfile' '"$inotify_home"/bin/inotifywait'

+ '[' -e /etc/rsync.password ']'

++ date +%F_%H%M%S

+ echo 2013-07-13_194330 /etc/rsync.password is exist

+ for i in '$src' '$rsync_passfile' '"$inotify_home"/bin/inotifywait'

+ '[' -e /usr/local/inotify/bin/inotifywait ']'

++ date +%F_%H%M%S

+ echo 2013-07-13_194330 /usr/local/inotify/bin/inotifywait is exist

+ read file

+ /usr/local/inotify/bin/inotifywait -mrq --timefmt %d%m%y-%H:%M --format '%T %w%f' -e modify,create,delete,attrib /home/backup

+ /usr/bin/rsync -aruz --delete /home/backup/ rsync_backup@server1::backup --password-file=/etc/rsync.password

+ read file

+ /usr/bin/rsync -aruz --delete /home/backup/ rsync_backup@server1::backup --password-file=/etc/rsync.password

+ read file

+ /usr/bin/rsync -aruz --delete /home/backup/ rsync_backup@server1::backup --password-file=/etc/rsync.password

测试通过

后台执行脚本

nohup /home/realtime_rsync.sh &

转载于:https://blog.51cto.com/51cliang/1248335

Rsync+inotify   组合使用同步方案相关推荐

  1. rsync+inotify文件实时同步实战

    说明:本文部分内容收集于互联网 不完全原创 但都经过本人亲身试验 方案: 1.双向:两台服务器都要开rsync同步和inotify监听 ---> 多对多 2.单向:一台服务器开inotify 其 ...

  2. rsync+inotify实现实时同步案例--转

    转自:http://chocolee.blog.51cto.com/8158455/1400596 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐 ...

  3. rsync+inotify实现实时同步案例

    随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数 ...

  4. rsync+inotify实现实时同步案例详解

    rsync+inotify实现实时同步案例详解 转自:http://chocolee.blog.51cto.com/8158455/1400596 随着应用系统规模的不断扩大,对数据的安全性和可靠性也 ...

  5. Rsync+inotify实现实时同步

    如果有一天去接受面试:面试官问你一个1t的文件需要进行传输,问题用何种方法.假如你答了scp或者ftp.那么你挂的几率是很大的 一.inotify介绍 inotify-tools有两个命令 //ino ...

  6. Linux学习--rsync+inotify实现自动同步

    Linux学习–rsync+inotify实现自动同步 rsync remote synchronization(远程同步) rsync 的最大特点是会检查发送方和接收方已有的文件,仅传输有变动的部分 ...

  7. rsync + inotify 实现实时同步

    rsync + inotify 实现实时同步 rsync 简介 Rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具.并且可以不进行改变原有数据的属性信息,实现 ...

  8. rsync+inotify高效实时同步

    多服务器高效数据实时同步方案 实验环境 docker模拟两台centos7服务器 名称 ip 类型 centos_a 172.17.0.2 数据服务器 centos_b 172.17.0.3 备份服务 ...

  9. rsync + inotify 数据实时同步

    一.rsync介绍 rsync英文全称为Remote synchronization,从软件的名称就可以看出来,Rsync具有可是本地和远程两台主机之间的数据快速复制同步镜像.远程备份的功能,这个功能 ...

  10. Linux平台上文件同步——rsync+inotify之定时同步

    1 前言 1.1 概述 本文介绍使用rsync和 inotify-tools,实现linux 上的本地定时同步和远程定时同步的方法. 1.2 实验环境 服务器两台 操作系统: CentOS-7.4 软 ...

最新文章

  1. PCL :K-d tree 2 结构理解
  2. react把表格渲染好ui_在React中实现条件渲染的7种方法
  3. 阿里GTS解密--GTS的原理、架构与特点
  4. OSPF邻接形成过程
  5. __declspec(naked)详解
  6. HTTPS虐我千百遍,我却待她如初恋!
  7. 利用zookeeper实现分布式服务故障自动剔除/服务自动注册的思路
  8. 梯度下降法和随机梯度下降法
  9. 【剑指offer】面试题55 - II:平衡二叉树(Java)
  10. 黑苹果找不到触控板_苹果高管告诉你为何要添加触控板功能
  11. Android 系统(258)---获取SIM卡手机号
  12. VC遍历窗口上的控件
  13. java.lang.Class.isPrimitive()用法解析
  14. “云时代架构”经典文章阅读感想十三
  15. Python基于wordnet实现词语相似度计算分析
  16. 安全公司-* * * *-面试题:_ 安卓逆向分析分享
  17. 【Dam Dadi Doo】MMD镜头+动作打包下载.zip
  18. 微信小游戏马甲包过审策略
  19. Android 气泡碰撞
  20. 离散题目9(判断是否为单射函数)

热门文章

  1. spring cloud config git库文件搜索顺序
  2. Spark学习笔记6:Spark调优与调试
  3. IOS TableView详解
  4. hdu4318 最短路变形
  5. GeoServer不同服务器安装配置、数据发布及客户端访问
  6. SQL语句中的rank () over , row_number() over ,rank_dense ()
  7. 二叉树转为单链表——Flatten Binary Tree to Linked List
  8. select min from 连接
  9. jquery操作元素
  10. Linux学习笔记1-在CentOS 7中安装配置JDK8