背景:随着时代的发展,手工的同步文件的功能已经不适合为高效的现代化企业的服务了。

rsync的局限性:

1、对于大的文件(百万级、千万级的)同步耗时。

2、不能实时的检测,rsync是根据Linux守护进程的方式进行触发同步的,这过程有很大的时间差。导致出现问题的时候可能无法完全的恢复数据。

3、同步笨重,同步一次就是全部同步的了,不会自动只同步更新的那点。

所以rsync+inotify的实现可以更加高效,自动化的实现文件的实时同步,能够大大的提高工作的效率,有效的减少手工操作的失误。

inotify的简介

Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。学习如何将 inotify 集成到您的应用程序中,并发现一组可用来进一步自动化系统治理的命令行工具。

是一个非常好的辅助性工具软件,后期本博客还会有更加多与inotify嵌合的功能发布!

一、需求环境

Ceotos 6.5 内核2.6.32-431.el6.x86_64

虚拟机环境下

inotify服务器:192.168.0.244/24          (即主机B)

备用服务器:192.168.0.144/24            (即主机A)

rsync-3.1.2.tar.gz

inotify-tools-3.14.tar.gz

二、搭建rsync+inotify环境

注:在原来的rsync服务器上面即 inotify服务器:192.168.0.244/24 上面开始搭建

1、先安装好inotify包

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

tar zxf inotify-tools-3.14.tar.gz

cd inotify-tools-3.14

./configure --prefix=/usr/local/inotify-3.14

make && make install

2、创建监控脚本inotify.sh

#!/bin/bash

#para

host01=192.168.0.144#rsync服务器地址

src=/backup #本地监控的目录

dst=backup #rsync服务器的模块名称

user=nowview #rsync服务器的虚拟用户

rsync_passfile=/etc/rsyncd.password #本地调用rsync服务的密码文件

inotify_home=/usr/local/inotify-3.14#inotify的安装目录

#judgeif [ ! -e "$src"] \|| [ ! -e "${rsync_passfile}"] \|| [ ! -e "${inotify_home}/bin/inotifywait"] \|| [ ! -e "/usr/bin/rsync"];then

echo "Check File and Folder"exit9

fi${inotify_home}/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write,delete,create,attrib $src \| while read file

do# rsync-avzP --delete --timeout=100 --password-file=${rsync_passfile} $src $user@$host01::$dst >/dev/null 2>&1cd $src&& rsync -aruz -R --delete ./ --timeout=100 $user@$host01::$dst --password-file=${rsync_passfile} >/dev/null 2>&1

doneexit0

脚本创建完毕,丢给后台运行。(开机启动的话放到rc.local文档即可)

sh inotify.sh &

查看年一下进程

[root@主机B-244 /]# ps -ef |grepinotify

root1793 1 0 17:53 ? 00:00:00 sh inotify.shroot1806 1793 0 17:53 ? 00:00:00 /usr/local/inotify-3.14/bin/inotifywait -mrq --timefmt %d/%m/%y %H:%M --format %T %w%f -e close_write,delete,create,attrib /backup

root1807 1793 0 17:53 ? 00:00:00 sh inotify.shroot2032 1843 0 17:58 pts/0 00:00:00 grep --color inotify

inotify的配置基本如上,更多的功能参数请参考上面的inotify文档网址。

三、测试

现在,在inotify服务器上面可以看到

[root@主机B-244 backup]# pwd

/backup

[root@主机B-244 backup]# ls

1 108 117 126 135 144 153 162 171 180 19 199 27 36 45 54 63 72 81 90 asound.conf krb5.conf pm-utils-hd-apm-restore.conf10 109 118 127 136 145 154 163 172 181 190 2 28 37 46 55 64 73 82 91 cgconfig.conf ld.so.conf request-key.conf100 11 119 128 137 146 155 164 173 182 191 20 29 38 47 56 65 74 83 92cgrules.conf libaudit.conf resolv.conf101 110 12 129 138 147 156 165 174 183 192 200 3 39 48 57 66 75 84 93cgsnapshot_blacklist.conf libuser.conf rsyslog.conf102 111 120 13 139 148 157 166 175 184 193 21 30 4 49 58 67 76 85 94dracut.conf logrotate.conf sestatus.conf103 112 121 130 14 149 158 167 176 185 194 22 31 40 5 59 68 77 86 95 gai.conf mke2fs.conf sudo.conf104 113 122 131 140 15 159 168 177 186 195 23 32 41 50 6 69 78 87 96 grub.conf mtools.conf sudo-ldap.conf105 114 123 132 141 150 16 169 178 187 196 24 33 42 51 60 7 79 88 97gssapi_mech.conf nfsmount.conf sysctl.conf106 115 124 133 142 151 160 17 179 188 197 25 34 43 52 61 70 8 89 98host.conf nsswitch.conf xinetd.conf107 116 125 134 143 152 161 170 18 189 198 26 35 44 53 62 71 80 9 99 idmapd.conf ntp.conf yum.conf

我已经在根目录下创建了一个backup目录,立刻创建了如上内容

由于inotify脚本已经在后台运行了,正在实时的监控着这个目录的变化

下面到备用服务器(即原rsync服务器)上面去看看原来的rsync的模块bauckup的路径/home/backup下的情况

[root@主机A-144 backup]# pwd

/home/backup

[root@主机A-144backup]# ll

total0[root@主机A-144 backup]#

目前还有同步过来,需要时间

等待......

再看

[root@主机A-144 backup]# ls

1 108 117 126 135 144 153 162 171 180 19 199 27 36 45 54 63 72 81 90 asound.conf krb5.conf pm-utils-hd-apm-restore.conf10 109 118 127 136 145 154 163 172 181 190 2 28 37 46 55 64 73 82 91 cgconfig.conf ld.so.conf request-key.conf100 11 119 128 137 146 155 164 173 182 191 20 29 38 47 56 65 74 83 92cgrules.conf libaudit.conf resolv.conf101 110 12 129 138 147 156 165 174 183 192 200 3 39 48 57 66 75 84 93cgsnapshot_blacklist.conf libuser.conf rsyslog.conf102 111 120 13 139 148 157 166 175 184 193 21 30 4 49 58 67 76 85 94dracut.conf logrotate.conf sestatus.conf103 112 121 130 14 149 158 167 176 185 194 22 31 40 5 59 68 77 86 95 gai.conf mke2fs.conf sudo.conf104 113 122 131 140 15 159 168 177 186 195 23 32 41 50 6 69 78 87 96 grub.conf mtools.conf sudo-ldap.conf105 114 123 132 141 150 16 169 178 187 196 24 33 42 51 60 7 79 88 97gssapi_mech.conf nfsmount.conf sysctl.conf106 115 124 133 142 151 160 17 179 188 197 25 34 43 52 61 70 8 89 98host.conf nsswitch.conf xinetd.conf107 116 125 134 143 152 161 170 18 189 198 26 35 44 53 62 71 80 9 99 idmapd.conf ntp.conf yum.conf

[root@主机A-144 backup]# pwd

/home/backup

这些内容已经同步过来了。

四、总结

关于这个inotify.sh它的这个监控,触发问题。

目前根据我的测试得出的结论是这样的,它的实时同步是建立在当这个被监控的目录/back  一旦生成有文件或者生成任何的东西的情况下,这个脚本就会立刻触发同步更新。当然会根据文件大小、网络以及其他的因素,它的同步会有所时间的差别。

总的来说是inotify服务器目录变化,那么rsync服务器的目录就跟着变化(同步),反过来就不可以了。不过,即便这样已经是满足了现代企业日常的需求了。

Rsync 的详细介绍:请点这里

Rsync 的下载地址:请点这里

linux目录自动同步,Linux下rsync+inotify实现实时文件自动同步相关推荐

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

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

  2. rsync + inotify 数据实时同步

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

  3. rsync + inotify 实现实时同步

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

  4. Rsync+inotify搭建实时同步系统

    Rsync 优点 rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期地备份文件服务器数据到远程服务器上,对本地磁盘定期进行数据镜像等. ...

  5. 利用rsync+inotify搭建实时同步系统

    利用rsync+inotify搭建实时同步系统 1:单独使用rsync的不足: rsync同步数据时,需要扫描所有文件后进行比对,然后进行差量传输.如果文件数量达到了百万甚至千万量级,扫描所有文件将是 ...

  6. linux下rsync+inotify实现服务器之间文件实时同步

    先介绍一下rsync与inotify. 1.rsync 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例 ...

  7. linux下rsync+inotify同步文件

    inotify进行对服务器文件监听,一旦检测到有改动则发起同步rsync服务器文件到客户端 一.安装和下载rsync 下载地址:http://rsync.samba.org/ 1.安装步骤: 1)# ...

  8. Linux平台上文件同步——rsync+inotify之实时同步

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

  9. linux mysql主从半同步_centos下安装mysql主从架构(半同步/多实例)

    centos下安装mysql主从架构(半同步/多实例) [toc] 简介 本教程会进行mysql一机多实例的安装.mysql主从同步配置.半同步配置 环境 OS: CentOS Linux relea ...

最新文章

  1. 解决html页面闪烁,解决前端页面闪烁问题(转载)
  2. Java程序员的春天!java引用数据类型和基本数据类型区别
  3. 【杂谈】从CV小白到人脸表情识别专栏作者,我与有三AI的故事
  4. 删除数据库所有表 序列号
  5. hibernate入门总结
  6. c语言第四版课后答案第三章3.4,算法与数据结构C语言版课后习题答案(机械工业出版社)第3,4章 习题参考答案...
  7. ad17 pcb扇孔_PCB设计中为什么需要先进行扇孔
  8. StructureMap极速上手指南(翻译)
  9. 在Linux中怎么把用户添加到组中
  10. 【Android】两种动画介绍(Tween动画、Frame动画)
  11. python中trun是什么意思_Python 中 'unicodeescape' codec can't decode bytes in position XXX: trun错误解...
  12. ai人工智能的数据服务_建立AI系统的规则-来自数据科学家
  13. 1、4G杂项:Air72XUX平台secure boot使用说明
  14. WinCC 中批量绑定变量
  15. juniper 设备查看光衰的命令
  16. Centos7.x上安装cerebro
  17. 包装设计模式-Decorator
  18. [Camera]摄像头模组硬件
  19. 非对称加密与数字证书
  20. 多用途DF无线数据收发模块

热门文章

  1. mysql5.6免安装配置(菜鸟版)
  2. HTTP 错误 500.22 - Internal Server Error
  3. 初步了解react-babel-虚拟DOM-JSX-类组件-函数式组件
  4. JavaScript 面向对象编程(四) —— 正则表达式
  5. java多态的简单例子_要JAVA的简单例子,继承\多态的,详细讲解运行的每一步
  6. linux mysql 集群安装配置_linux下mysql集群的安装
  7. Web Visibilitychange
  8. Vue (响应式原理-模拟-3-Compiler)
  9. 7-11 名人堂与代金券 (25 分)
  10. L2-1 包装机 (25 分)