一.项目需求:服务器A的数据目录内容变化后,改变要实时更新到多台服务器B C 的相关目录。

二.解决方法:

1、多台服务器做为rsync服务器端,服务器A做为rsync客户端,使用rsync命令同步数据内容。

2、inotify做为触发器,当服务器A数据目录内容变化时,执行rsync命令同步数据。

A  192.168.13.151

B  192.168.13.252

C  192.168.13.253

三.安装配置

服务器端BC (192.168.13.252 192.168.13.253)

# wget http://www.samba.org/ftp/rsync/src/rsync-3.0.7.tar.gz

# tar zxvf rsync-3.0.7.tar.gz

# cd  rsync-3.0.7

# ./configure –prefix=/usr/local/rsync

# make

# maek install

# vi /etc/rsyncd.conf

uid = root

gid = root

use chroot = no

max connections = 10

pid file =  /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file =  /var/log/rsync.log

[images]

path = /opt/images

read only = no

auth users = valeRsync

secrets file = /etc/rsyncd.secrets

建立用户认证文件

# echo -ne “valeRsync:Vale.com-init” >   /etc/rsyncd.secrets

# chmod 600 /etc/rsyncd.secrets

开机自动执行# echo -ne “rsync –daemon –config=/etc/rsyncd.conf”   >> /etc/rc.local

启动服务

# /usr/local/rsync/bin/rsync –daemon –config=/etc/rsyncd.conf

客户端A (192.168.13.251)

# wget http://www.samba.org/ftp/rsync/src/rsync-3.0.7.tar.gz

# tar zxvf rsync-3.0.7.tar.gz

# cd  rsync-3.0.7

# ./configure –prefix=/usr/local/rsync

# make

# maek install

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

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

# cd inotify-tools-3.13

# ./configure –prefix=/usr/local/inotify

# make

# make install

建立用户密码文件

# echo -ne “Vale.com-init”  > /etc/rsyncd.secrets

# chmod 600 /etc/rsyncd.secrets

开机自动执行# echo -ne ‘/root/InotifyRsync.sh &’ >> /etc/rc.local

我的脚本# vi  /root/InotifyRsync.sh

#!/bin/bash

host_1=192.168.13.252

host_2=192.168.13.253

src=/opt/image/

dst=images

user=valeRsync

/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib $src | while read file

do

rsync -avzP --delete --password-file=/etc/rsyncd.secrets $src $user@$host_1::$dst > /dev/null

rsync -avzP --delete --password-file=/etc/rsyncd.secrets $src $user@$host_2::$dst > /dev/null

#echo "${file} was rsynced"

done

exit 0

四.inotify支持的触发事件

IN_ACCESS,即文件被访问

IN_MODIFY,文件被 write

IN_ATTRIB,文件属性被修改,如 chmod、chown、touch 等

IN_CLOSE_WRITE,可写文件被 close

IN_CLOSE_NOWRITE,不可写文件被 close

IN_OPEN,文件被 open

IN_MOVED_FROM,文件被移走,如 mv

IN_MOVED_TO,文件被移来,如 mv、cp

IN_CREATE,创建新文件

IN_DELETE,文件被删除,如 rm

IN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己

IN_MOVE_SELF,自移动,即一个可执行文件在执行时移动自己

IN_UNMOUNT,宿主文件系统被 umount

IN_CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)

IN_MOVE,文件被移动,等同于(IN_MOVED_FROM | IN_MOVED_TO)

备注:

#!/bin/sh

#set -x

#var

src="/usr/local/nginx/html/lib /usr/local/nginx/html/www /usr/local/nginx/html/var/www.work.com.conf.php"

des_ip="172.18.1.35 172.18.1.36 172.18.1.37 172.18.1.38"

#function

inotify_fun ()

{

/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y-%H:%M' --format '%T %w%f' -e modify,delete,create,move $1

| while read time file

do

for ip in $des_ip

do

echo "`date +%Y%m%d-%T`: rsync -avzq --delete --progress $1 $ip:`dirname $1`"

rsync -avzq --delete --progress $1 $ip:`dirname $1`

echo

done

done

}

#main

for a in $src

do

inotify_fun $a &

done

linux文件同步方法,inotify + rsync实现linux文件实时同步相关推荐

  1. Inotify+Rsync实现linux文件实时同步

    公司一套系统的同步使用的donotify,不能实现子目录的实时同步,通过查资料,发现inotify可以实现子目录的实时同步,以下为笔记. 一.介绍 Inotify 是文件系统事件监控机制,作为 dno ...

  2. Linux下Rsync+Inotify-tools实现数据实时同步

    说明: 操作系统:CentOS 5.X 源服务器:192.168.21.129 目标服务器:192.168.21.127,192.168.21.128 目的:把源服务器上/home/www.osyun ...

  3. Linux下Rsync+sersync实现数据实时同步

    一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增加.删除 ...

  4. linux云计算架构师:Rsync+sersync实现数据实时同步

    全套学习资料移步至公众号[学神来啦]更多学习资料添加扣扣资源群:661308959 本节所讲内容:   2.1  Rsync概述   2.2  Rsync服务安装   2.3  Rsync+sersy ...

  5. linux rsync yum安装,Linux安装yum安装rsync 、Linux编译安装最新版rsync

    Loading... # Linux安装yum安装rsync .Linux编译安装最新版rsync ## 针对CentOS采用 yum 安装 ### 安装 ``` yum install rsync ...

  6. Centos rsync + notify 实现数据实时同步

    目录 rsync + notify 实现数据实时同步 一.简介 二.原理 三.实验环境 四.实验预期 五.准备工作 六.服务配置 目标服务器配置 源服务器配置 七.实现inodify实时触发rsync ...

  7. 利用inotify+rsync实现linux文件批量更新

    如果只对经常改动的目录进行同步,也可以忽略这个问题,如果每次改动的目录多较大,那么就要用到inotify了,Inotify是一种强大的.细粒度的.异步的文件系统事件监控机制,Linux内核从2.6.1 ...

  8. linux 复制文件_使用 rsync 复制大文件的一些误解 | Linux 中国

    这位朋友认为 rsync 是一个神奇的工具,应该仅"同步"文件本身.但是,我们大多数人所忘记的是了解 rsync 的真正含义.用法,以及我认为最重要的是它原本是用来做什么的.-- ...

  9. 利用ssh+rsync+inotify实现数据的异地实时同步

    在服务器中,通常结合计划任务.shell脚本来执行本地备份.为了进一步提高备份的可靠性,使用异地备份也是非常重要的,利用rsync工具,可以实现快速.高效的异地备份.本篇博客将配置rsync+cron ...

最新文章

  1. 使用Python,OpenCV实现简单的场景边界/拍摄转换检测器
  2. R语言ggplot2可视化移除图例中的a字符实战
  3. 技能树升级——Chrome Headless模式 - 全栈客栈 - SegmentFault
  4. 《JAVA练习题目4》 训练要点:String和StringTokenizer的使用,以及排序算法。
  5. Python编程基础:第四十四节 方法重写Method Overriding
  6. 运行脚本时用SPOOL保存运行结果的问题
  7. JVM从入门到精通(六):JVM调优必备理论知识 - 3种垃圾清除算法,常见的垃圾回收器
  8. 从 vue-cli 源码中,我发现了27行读取 json 文件有趣的 npm 包
  9. java定位线程阻塞_Arthas - 定位 Java 性能问题原来这么简单
  10. 十大经典排序算法动画演示
  11. 云小课 | MRS基础入门之HDFS组件介绍
  12. volatile和原子操作
  13. Cesium:鼠标移动事件判断是否在地球上操作以及获取经纬度
  14. gomarket服务器位置,第一章 昂达V711双核版常见问题解答.pdf
  15. Symbian中的iScanCode和iCode
  16. Java初级程序员面试总结(二) --HashMap篇
  17. VS2017--如何添加版权声明注释
  18. 理财学习05-基金定投
  19. html/css(1)
  20. Android开发之殇

热门文章

  1. [Python]使用QRCode生成彩色二维码
  2. 天池比赛——Docker基础镜像搭建,容器导出镜像
  3. s5pv210 linux,S5PV210-零基础体验uboot
  4. java微信token验证_JAVA折腾微信公众平台(Token验证)
  5. |flutter仿微信界面聊天室
  6. Win10 关闭Bitlocker,Bitlocker解密进度条始终卡在96%的解决方法
  7. 本地野菜的功效和吃法
  8. netscreenfortinet
  9. 外网下载速度过慢问题解决办法
  10. 初识OpenGL (3)片段着色器(Fragment Shader)