rsync 具有安全性高、备份迅速、支持增量备份等优点,通过 rsync 可以解决对实时性要求不是很高的数据备份需求。如果实时性高的情况下,就会体现出他的不足,虽然可以利用任务计划来触发同步,但还是有一定的时间差,并且 rsync 在同步数据的时候,要遍历整个目录树后进行比对,文件数量达到一定量级的情况下,这是很低效的做法。所以就有了今天的 rsync + inofity 。

inotify 是一种强大的、细粒度的、异步文件系统时间监控机制,Linux 内核从 2.6.13 起,加入了对inotify 的支持,他可以监控文件系统中 添加、删除、修改、移动等各种细微事件,第三方软件inotify-tools 利用这个内核接口就能监控文件系统下文件的各种变化,从而触发 rsync 同步数据,解决了数据同步实时性问题。

一、    在 web(web安装rsync就行不需要配置rsyncd.conf) 、web_bak 安装 rsync(web在/var/www/html/下更新信息,在wen_bak的/var/www/html/下跟着更新所有数据)

IP:192.168.1.80是源服务器就是服务端(yum安装rsync就行,不需要配置),192.168.1.81是目的服务器就是客户端(yum安装rsync,还要配置/etc/rsyncd.conf)。

[root@localhost ~]# yum -y install rsync

二、配置 web_bak rsync

[root@web_bak]# vim /etc/rsyncd.conf   ## 配置文件需手工创建
# rsync
uid = nobody
gid = nobody
use chroot = no
max connections = 10
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/run/rsyncd.log
[web1]
path = /var/www/html/(客户端的路径不一样要和服务端一样,自己定)
comment = web_bak file
ignore errors
read only = no
write only = no
hosts allow = 192.168.1.80  #web 的 IP
hosts deny = *
list = false
uid = root
gid = root
auth users = rsync80
secrets file = /etc/rsync.pass
[root@web_bak]# echo"rsync80:123456" > /etc/rsync.pass
[root@web_bak]# chown root.root/etc/rsync.pass
[root@web_bak]# chmod 600/etc/rsync.pass

三、以守护进程启动 rsync ,并加入开机启动

[root@web_bak]# rsync --daemon
[root@web_bak]# ps aux | greprsync
root      1344 0.1  0.0 107612   660 ?        Ss  19:17   0:00 rsync --daemon
root      1347  1.0  0.1 103240   864 pts/0    S+   19:17  0:00 grep rsync
[root@web_bak]# which rsync
/usr/bin/rsync
[root@web_bak]# echo"/usr/bin/rsync --daemon" >> /etc/rc.d/rc.local
[root@web_bak]# iptables -I INPUT -p tcp--dport 873 -j ACCEPT
[root@web_bak]# service iptables save
[root@web_bak]# service iptables restart

(蓝色这里是防火墙根据自己需求,我关闭防火墙了,所以这部我不操作)

四、在 web 上安装 inotify-tools

[root@localhost]# uname -r
2.6.32-358.el6.x86_64
[root@localhost]# ll/proc/sys/fs/inotify/
总用量 0
-rw-r--r-- 1 root root 0 5月  20 19:29max_queued_events
-rw-r--r-- 1 root root 0 5月  20 19:29 max_user_instances
-rw-r--r-- 1 root root 0 5月  20 19:29max_user_watches
[root@localhost]# yum -y installgcc gcc-c++ make
[root@localhost src]#tar zxf inotify-tools-3.14.tar.gz
[root@localhost src]# cdinotify-tools-3.14
[root@localhost inotify-tools-3.14]# ./configure ; make ; make install
[root@localhost ~]# ll/usr/local/bin/inotifywa*
-rwxr-xr-x. 1 root root 44279 5月  21 22:57/usr/local/bin/inotifywait
-rwxr-xr-x. 1 root root 41369 5月  21 22:57/usr/local/bin/inotifywatch
# inotifywait 用于等待文件或文件集的一个特定时间,他可以监控任何文件及目录的设置,并且可以递归监控整个目录树。
# inotifywatch 用于收集被监控的文件系统统计数据,包括每个 inotify 时间发生的次数等信息。
inotify 接口参数介绍 (用来限制 inotify 消耗kernel memory 的大小,由于是内存参数,可以随时调节大小。)
/proc/sys/fs/inotify/max_queued_evets 
# 表示调用 inotify_init 时分配给inotify instance 中可排队的 event 的数目的最大值,超出这个值的事件被丢弃,但会触发 IN_Q_OVERFLOW 事件。
/proc/sys/fs/inotify/max_user_instances
# 表示每个 real user ID 可创建的inotify instatnces 的数量上限。
/proc/sys/fs/inotify/max_user_watches
# 表示每个 inotify instatnces 可监控的最大目录数量。如果监控文件数据巨大,可以增加此值,如 echo 20000000 > 上述文件
inotifywait 参数介绍 (inotifywait 是一个监控等待事件,可以配合 shell 脚本使用。)
-m   即 --monitor 表示始终保持事件监听状态
-r   即 --recursive 表示递归查询目录
-q   即 --quiet 表示打印监控事件
-e   即 --event 通过此参数可以指定要监控的事件,如:modify、delete、create、attrib 等。

五、配置 web 内容发部节点

[root@localhost ~]# vim /usr/bin/inotify_rsync.sh   ## 自己创建
#!/bin/bash
IP1=192.168.1.81        # web_bak 的 IP
src=/var/www/html/(服务端这个路径不一样要和客户端一样,自己定)    # 需要同步的本地路径
dst1=web1                   #web_bak 上设置的验证模块名
user1=rsync80            # 同步用户
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e'-e modify,delete,create,attrib $src | while read files
                    do
                   /usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/rsync.pass$src $user1@$IP1::$dst1 > /dev/null
                    echo"${files} was rsynced" >> /tmp/rsync.log 2>&1
                    done
# --timefmt:指定时间的输出格式。
  --format: 指定变化文件的详细信息。
这两个参数一般配合使用,通过指定输出格式,输出类似与:
22/05/14 01:25 /var/www/html/.abc.123.swpDELETE was rsynced

脚本授权:chmod  -R  755 /usr/bin/inotify_rsync.sh

[root@localhost ~]# echo "123456" >/etc/rsync.pass  # 注意这里的密码文件中只有用户密码没有用户,格式跟 web_bak 的不同
[root@localhost ~]# chownroot.root /etc/rsync.pass
[root@localhost ~]# chmod 600/etc/rsync.pass
[root@localhost ~]# /usr/bin/inotify_rsync.sh&
[root@localhost ~]# echo "/usr/bin/inotify_rsync.sh&" >> /etc/rc.d/rc.local

然后在 web /var/www/html/ 下执行操作,看看 web_bak 会不会同步数据

转载于:https://blog.51cto.com/cgc243652136qq/1688460

rsync + inotify数据同步相关推荐

  1. Linux之Rsync+inotify数据同步

    rsync远程同步 rsync(Remote Sync): 是一款开源,快速,多功能的可实现本地或远程主机数据同步与增量备份的优秀工具.(数据同步与备份的工具)可使本地主机不同分区或目录之间及本地和远 ...

  2. 对采用rsync+inotify数据同步方式进行健康检测

    一.问题背景 我们平时一般都采用 rsync + inotify 的方式进行网站数据实时同步,有时会遇到不能正常推送到某台服务器,而不能及时发现,因此有必要对数据同步进行健康检测. 二.技术原理 在源 ...

  3. centos6 rsync+inotify 数据同步

    一 前戏 #检测rsync是否已安装 rpm -qa rsync #如未按装,执行yum安装 yum install -y rsync #新建用户和目录并授权 useradd -M -s /sbin/ ...

  4. ​inotify+rsync实时数据同步实践讲解17

    inotify+rsync实时数据同步实践讲解17说明:本文来自来自北京老男孩linux运维实战培训中心-运维就业课程免费视频内容,本文内容为系列内容,更多分享信息见:http://oldboy.bl ...

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

    RSYNC = Remote Sync 远程同步 高效,一定要结合shell 官网:https://rsync.samba.org Author: Andrew Tridgell, Wayne Dav ...

  6. Centos7 下 配置 rsync 以及 rsync+inotify 实时同步

    Centos 7 下 配置 Rsync 以及 rsync+inotify 实时同步 rsync介绍 rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支 持增量备份,保持链接和 ...

  7. rsync+inotify远程同步

    rsync+inotify远程同步 一.rsync 1.rsync服务器 2.同步方式 3.rsync命令 4.配置源的两种表示方法 5.实验:本地复制(下行复制) 二.inotify 1.简介 2. ...

  8. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步

    1.什么是 Rsync? Rsync 是一个开源的快速备份工具,是Linux和UNIX操作系统默认安装的组件之一,可在不同主机间镜像同步整个目录,并支持增量备份文件传输,保持链接和权限,采用优化的同步 ...

  9. Rsync+inotify 实时同步

     Rsync+inotify 实时同步(触发式) ========================================================================= ...

最新文章

  1. 电视机检测大巴徘徊在英格兰的大街上
  2. 数据科学和机器学习中使用的最多的20个R语言包
  3. 一起学nRF51xx 11 -  ficr
  4. idea中构造器和toString方法覆写的快捷键
  5. java_opts 参数与JVM内存调优
  6. jfinal 普通java工程_JFinal getModel方法如何在java项目中使用
  7. linux hook技术
  8. win10亮度怎么调_装好原版win10后,没有这样设置过,你的系统怎么可能好用!...
  9. SPSS常见数据分析方法比较汇总
  10. SVN服务器端安装教程
  11. 提搞网站访问速度可做的优化-------转载自熊哥的博客
  12. Linux与ISCSI
  13. 电动汽车充电站的最优选址matlab程序
  14. 【办公自动化】探秘少了22种用地的空间规划新国标并更新国标相关内容
  15. 《Unity Shader入门精要》 第五章 开始学习Unity Shader之旅 笔记
  16. u盘无响应+开启什么服务器,服务没有及时响应启动或控制请求怎么办?如何解决系统服务没有及时响应启动...
  17. PHP安卓苹果APP在线封装打包制作源码 H5手机网站转APP 免签封装绿标
  18. 计算机网络国际会议排名,科学网—计算机相关国际会议排名 - 刘耀的博文
  19. Ⅳ JavaScript函数
  20. macOS 13.0 Cocoapods安装 (you don‘t have write permissions for the /Library/Ruby/Gems/2.6.0 directory)

热门文章

  1. python 生成excel_python 数据生成excel导出(xlwt,wlsxwrite)代码实例
  2. python中prime_在AP中查找第一个元素,该元素是Python中给定Prime的倍数
  3. 获得对摄像头的访问权
  4. 理解vue中if和for指令不能同时使用
  5. checkout 撤销修改_撤销修改(第8篇)
  6. (补)20200105:整数转罗马数字
  7. mysql sql时间比较_mysql和sql时间 字段比较大小的问题
  8. java 读取内存地址结构体_Java并发系列之volatile
  9. 构造avl树_浅谈AVL树,B-树,B+树
  10. clickhouse 副本ReplicateMergeTree实现原理