linux sync server+inotify 1对多同步实例

linux sync server 1对多同步实例



需求:

线上也业务需求,意思就是N台机器需要维护各自机器上的一个目录,并且他们都是相同滴。so,这两天想了下,决定使用rsync server+inotify来解决这个问题。当然有的人会用自动化工具来推,但是我这里这个文件可能每次只改里面1小点内容,推个一百来兆的东西(这句话有错也莫喷了亲 = =)。。反正出于种种原因决定要使用 rsync



作业环境:

CentOS 6.3

rsync  version 3.0.6 (为系统自带版本 = = 当然编译的下面会说)

inotify-tools 3.14

-------------------

首先说明:

其实rsync和inotify-tools使用yum或者系统自带的都可以的。

inotify需要注意内核是否支持:(ls /proc/sys/fs/inotify 下是否有max_queued_events  max_user_instances  max_user_watches三个文件)

rsync的编译安装也不过多介绍了,tar xf *** && cd *** && ./configure && make && make install

-------------------

场景说明:

我这里是1台server(rsync+inotify)来主动推送文件到N台机器(rsync守护进程),并且我N台机器配置文件配置都一样(喊密码认证文件)。

-------------------

server端配置:

mkdir /data/sync-server
cd /data/sync-server
yum -y install inotify-tools rsync
#然后编写inotify-tools脚本
vim sync.sh
#!/bin/bash
#
source /etc/profile &>/dev/null
basedir=$(cd `dirname $0`;pwd)
log="$basedir/sync.log"
synclog="$basedir/result.log"
file="$basedir/iplist"

/usr/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format  ‘%T %w%f‘  -e modify,delete,create,attrib,move /data/karaf-sync/ccms-build/ |while read file 
do
while read line
do
echo "$line sync start..."
    /usr/bin/rsync -vzrtopg --delete --progress /data/karaf-sync/ccms-build/ [email protected]$line::ccms --password-file=/data/karaf-sync/scripts/pwd &>> $log
    if [ $? -eq 0 ];then
        echo "`date +%F-%H:%M` $line was rsynced Success !!!" &>> $synclog
        echo "-----------------------------------------------------------" &>> $synclog
        echo "" &>> $synclog
    else
        echo "`date +%F-%H:%M` $line was rsynced Failed !!!" &>> $synclog
        echo "-----------------------------------------------------------" &>> $synclog
        echo "" &>> $synclog
    fi  
done < $basedir/iplist             #我外面有相关的定时同步iplist的操作
done
inotifywait:
-r, --recursive递归查询目录。
-q, --quiet,打印出监控事件。
-e, --event,指定要监控的事件,常见的事件有move、modify、delete、create、attrib等。全量:(access、modify、 attrib、 close_write、 close_nowrite、close、open、 moved_to、 moved_from、move、 move_self、 create、delete、delete_self、unmount)
--timefmt:时间的输出格式
--format:指定变化文件的详细信息
------------------------------------------------------
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)
注:上面所说的文件也包括目录。

rsync的命令请另外搜索。。

client端配置:

vim /etc/rsyncd.conf
uid = root        #运行RSYNC守护进程的用户
gid = root        #运行RSYNC守护进程的组

port = 873          #监听端口
use chroot = no     #不使用chroot
max connections = 100   #最大连接数,0为不限制

timeout = 600        #通过该选项可以覆盖客户指定的IP超时时间.通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户端.超时单位为秒钟,0表示没有超时定义,这也是默认值.对于匿名rsync服务器来说,一个理想的数字是600.
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
#log format --- google

[ccms]
path = /data/ccms-build/       #需要同步的路径
comment =  ccms dir           #名称
ignore errors                #可以忽略一些无关的IO错误
read only = no              
list = no                      #不允许列文件
hosts allow = 192.168.***.***/255.255.255.0       #允许的客户端
auth users = ccms                   #认证用户
secrets file = /etc/rsync.pwd       #密码文件:600

vim /etc/rsync.pwd
ccms:********    #同server端相同

chmod 600 /etc/rsync.pwd

启动进程

/usr/bin/rsync --daemon
echo "/usr/bin/rsync --daemon" >> /etc/init.d/rc.local


到这里就差不多了,我这里使用的是screen 启动之前的server的脚本,然后就可以两边写文件进行测试了。

另外一些命令的具体用法 ,可以搜一下,作为参考,这里就不再详细说明了,抱歉!

linux sync server+inotify 1对多同步实例

时间: 2024-10-13 10:59:08

linux sync server+inotify 1对多同步实例的相关文章

rsync+inotify实时数据的同步实例

rsync+inotify实时数据的同步 一.rsync+inotify的组合为什么会出现?? rsync缺陷: 1.由于rsync在实施大量数据备份时,工作方式是扫描整个数据文 件,其实发生更改  的只是一小部分,导致过多的占用系统资源.                2.rsync不能实时的去监测.同步数据,虽然它可以通过linux守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据  可能出现不一致,无法在应用故障时完全的恢复数据. inotify优点

Linux下rsync+inotify实现实时数据同步

一. rsync 1. 什么是rsync rsync 是一个远程数据同步工具, 可以实现本主机内,或跨主机的数据同步.以服务运行时监听在TCP 873端口, rsync演算法可以达到只传送文件变化的部分,而不是整个都传送,因此速度相当的快,性能不错. 所以rsync通常可以作为备份工具来使用. 1.1 rsync基本特点: 1. 可以镜像保存整个目录树或文件系统 2. 可以很容易做到保持原来文件的权限.时间.软硬链接等; (通过rsync的一些参数, 如 -a) 3. 较高的数据传输效率 4.

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

先介绍一下rsync与inotify. 1.rsync 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等.随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚至千万量级,扫描所

【linux教程】inotify用法简介及结合rsync实现主机间的文件实时同步

一.inotify简介 inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统(API),它提供了一种监控文件系统(基于inode的)事件的机制,可以监控文件系统的变化如文件修改.新增.删除等,并可以将相应的事件通知给应用程序.该机制由著名的桌面搜索引擎项目beagle引入用于替代此前具有类似功能但存在诸多缺陷的dnotify. inotify既可以监控文件,也可以监控目录.当监控目录时,它可以同时监控目录及目录中的各子目录及文件的.此外,inotify

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

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

linux svn server搭建、多项目管理及主备方案

[svn简介]            svn用于版本管理数据,它采用了分支管理系统.在它出现之前存在CVS,svn推出之后,逐步替代了CVS.            目前又出现git,相比于svn,git更支持分布式版本管理,目前发展很猛,这里不详细介绍.大家可以先把svn了解熟悉之后,再看看git,对比下.            ps:时代总是在进步啊,需要跟上潮流.同时,需要了解潮流为何,需要思考潮流背后的原因为何,了解背景历史为何,否则就是盲从了. [第一安装] yum install s

CentOS7.2下unison+inotify的Web目录同步方案

CentOS7.2下unison+inotify的Web目录同步方案 学习 unison CentOS7.2下unison+inotify的Web目录同步方案 1. 背景 2. Unison简介 3. 环境准备 4. 安装Objective Caml compiler 5. 安装unison 6. 安装inotify 7. 配置双机ssh信任 8. unison的使用 9. 配置双机web目录同步 10. 总结 1. 背景 最近需要上线一个公司展厅项目,项目中主要是后台图片管理.因此它基本不会出

Ubuntu 下rsync+inotify实现实时文件同步

rsync+inotify实现实时文件同步 一.rsync的优点与不足 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等. 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚

LVS Load Balancing Linux Virtual Server

简介:Linux虚拟服务器(Linux Virtual Server. LVS),是一个由章文松开发的自由软件.利用KVS可以实现高可用的.可伸缩缩的Web, Mail, Cache和Medial等网络股务..井在此基 础上开发支持庞大用户数的,可伸缩的,高可用的电子商务应用.LVS1998年发展到现在,已经变得比较成熟,目前广泛应用在各种网络服务和电了商务应用 中.LVS具有很好的伸缩缩性.可靠性和管埋性,通过LVS要实现的最终目标是:利用linux 操作系统和LVS集群软件实现一个高可用.高