Sersync实现触发式文件同步 替代inotify和rsync

Pyinotify是一个Python模块,用来监测文件系统的变化。 Pyinotify依赖于Linux内核的功能—inotify(内核2.6.13合并)。 inotify的是一个事件驱动的通知器,其通知接口通过三个系统调用从内核空间到用户空间。pyinotify结合这些系统调用,并提供一个顶级的抽象和一个通用的方式来处理这些功能。
pyinotify其实就是通过调用系统的inotify来实现通知的。 http://my.oschina.net/zhangxu0512/blog/382867
你好。rsync的LINUX端,cwrsync的windows 端,windows 向LINUX传中文文件时总是乱码,添加--iconv=utf-8也不行

参考文章

http://blog.chinaunix.net/uid-20639775-id-3011124.html

http://www.apelearn.com/bbs/forum.php?mod=viewthread&tid=10738&page=1&extra=#pid113148

http://zyan.cc/sersync/

mrsync https://sourceforge.net/projects/mrsync/

服务器端
1、安装rsync  两边都要做
yum install -y rsync
vi /etc/rsyncd.conf #服务器端
port=873
log file=/var/log/rsync.log
pid file=/var/run/rsyncd.pid
#address=192.168.0.10
max connections=0
timeout = 300
[webbak]
path=/tmp/www/wordpress
use chroot=true
read only=no
list=false
uid=root
gid=root
#auth users=test
#secrets file=/etc/rsyncd.passwd
hosts allow=192.168.1.109
#hosts deny = 0.0.0.0/32

#设置开机启动
echo "rsync --daemon" >>/etc/rc.local
#启动服务
rsync --daemon

2、安装Inotify-tools工具,实时触发rsync进行同步
两边机器都要做
安装inotify-tools
yum install -y make gcc gcc-c++
cd /mydata/download/
wget -c http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar zxvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
mkdir -p /usr/local/inotify
./configure --prefix=/usr/local/inotify
make
make install
设置系统环境变量,添加软连接
echo "PATH=$PATH:/usr/local/inotify/bin" >>/etc/profile.d/inotify.sh
source /etc/profile.d/inotify.sh #使设置立即生效
echo "/usr/local/inotify/lib" >/etc/ld.so.conf.d/inotify.conf && ldconfig
ln -s /usr/local/inotify/include /usr/include/inotify
修改inotify默认参数(inotify默认内核参数值太小)
vi /etc/sysctl.conf
fs.inotify.max_queued_events=99999999
fs.inotify.max_user_watches=99999999
fs.inotify.max_user_instances=65535
/sbin/sysctl -p


客户端

3、安装配置sersync
cd /download
wget -c https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sersync2.5.4_64bit_binary_stable_final.tar.gz

tar -zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz
mv GNU-Linux-x86 /usr/local/sersync

vi /usr/local/sersync/webbakconfxml.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
<host hostip="localhost" port="8008"></host>
<debug start="false"/>
<fileSystem xfs="false"/>
<filter start="true">
<exclude expression="(.*)\wp-config.php"></exclude>
<!-- <exclude expression="(.*)\.gz"></exclude>-->
<!-- <exclude expression="^info/*"></exclude>-->
</filter>
<inotify>
<delete start="true"/>
<createFolder start="true"/>
<createFile start="false"/>
<closeWrite start="true"/>
<moveFrom start="true"/>
<moveTo start="true"/>
<attrib start="true"/>
<modify start="true"/>
</inotify>

<sersync>
<localpath watch="/webbak">
<remote ip="192.168.14.91" name="webbak"/>
<!--<remote ip="192.168.1.12" name="tongbu"/>-->
<!--<remote ip="192.168.1.13" name="tongbu"/>-->
</localpath>
<rsync>
<commonParams params="-az"/>
<auth start="false" users="root" passwordfile="/etc/rsync.pas"/>
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
</rsync>
<failLog path="/tmp/sersync_fail_log.sh" timeToExecute="60"/><!--default every 60min execute once-->
<crontab start="true" schedule="720"><!--720mins-->
<crontabfilter start="true">
<exclude expression="wp-config.php"></exclude>
<!--<exclude expression="*.gz"></exclude>-->
<!--<exclude expression="info/*"></exclude>-->
</crontabfilter>
</crontab>

</sersync>
</head>

将命令添加进/etc/rc.local,以后重启系统以后才能正常同步
vi /etc/rc.local
/usr/local/sersync/sersync2 -d  -o /usr/local/sersync/webbakconfxml.xml

先测试一下rsync同步是否正常
rsync -av /tmp/ntpdate.log  192.168.14.91::webbak

配置环境变量
echo "export PATH=$PATH:/usr/local/sersync/bin" >>/etc/profile
source /etc/profile

4、脚本监控sersync
因为有的时候sersync脚本会自动关掉,因此需要写一个脚本自动的去检测该进程是否存在,不存在就启动,脚本内容如下:
vi /root/check_sersync.sh
#!/bin/bash
#Purpose: Check sersync whether it is alive
#Author: steven
SERSYNC="/usr/local/sersync/sersync2"
CONF_FILE="/usr/local/sersync/confxml.xml"
STATUS=$(ps aux |grep 'sersync2'|grep -v 'grep'|wc -l)
if [ $STATUS -eq 0 ];
then
$SERSYNC -d -r -o $CONF_FILE &
else
exit 0;
fi

脚本写好以后,添加到计划任务中去
crontab -e
*/1 * * * * /bin/sh /root/check_sersync.sh > /dev/null 2>&1

参数
-d 后台运行
-r 本地和目标进行一次整体同步,如果设置了<filter start="false">,那么暂时不能使用-r参数进行整体同步
-o xml配置文件位置
-n 线程数,机器配置高可以设置大一点
-m 插件
--help  查看帮助

rsyncd.conf里max connections=0 最好设置为0


其他实时同步解决方案一览
lsyncd1.4.2+rsync 同步数据
csync2+inotify 同步数据
csync2+lsyncd 同步数据
inotify+rsync 同步数据
DRBD 同步数据  缺点是备节点不能用

http://blog.johntechinfo.com/sersyncguild
http://blog.johntechinfo.com/technology/155

老男孩

f

Sersync实现触发式文件同步 替代inotify和rsync的更多相关文章

  1. Sersync+Rsync实现触发式文件同步

    背景 通常我们在服务器上使用rsync加上crontab来定时地完成一些同步.备份文件的任务.随着业务和应用需求的不断扩大.实时性要求越来越高.一般rsync是通过校验所有文件后,进行差量同步,如果文 ...

  2. Rsync+lsync实现触发式实时同步

    使用rsync+lsync实现触发式实时同步 服务器信息 centos6.5 主:192.168.5.4 搭建lsync 从:192.168.5.3 搭建rsync 1.1 从服务器设置 # yum ...

  3. 文件触发式实时同步 Rsync+Sersync Rsync+Inotify-tools

    一.概述 1.Rsync+Sersync 是什么? 1)Sersync使用c++编写基于inotify开发的触发机制: 2)Sersync可以监控所监听的目录发生的变化(包括新建.修改.删除),具体到 ...

  4. sersync实现触发式同步

    金山的一个居于inotify+rsync进行二次开发实现文件同步的小工具sersync,能够很方便的实现文件触发式同步 Inotify 是基于inode级别的文件系统监控技术,是一种强大的.细粒度的. ...

  5. linux服务器之间的文件同步;rsync+inotifywait;同步多个目录

    1.双向同步:unison+inotify 2.单向同步:rsync+inotify python版的pyinotify 本文介绍第二种方法: 1.Inotify 是一个 Linux特性,它监控文件系 ...

  6. 项目cobbler+lamp+vsftp+nfs+数据实时同步(inotify+rsync)

    先配置好epel源 [root@node3 ~]#yum install epel-release -y 关闭防火墙和selinux [root@node3 ~]#iptables -F [root@ ...

  7. rsync+sersync+inotify实现服务器间文件同步之一

    rsync+sersync+inotify实现服务器间文件同步之一:rsync安装配置 2013年12月14日 ⁄ Linux管理, 服务器集群技术 ⁄ 共 4925字 ⁄ rsync+sersync ...

  8. rsync+inotify文件同步

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

  9. inotify配合rsync实现文件同步

    一.slave端rsync设置在此部署rsync服务和rsync daemon 1.安装rsync   2.配置rsyncd.conf文件#vi /etc/rsyncd.conf配置文件uid = r ...

随机推荐

  1. jQuery.qrcode.js客户端生成二维码,支持中文并且可以生成LOGO

    描述: jquery.qrcode.js 是一个能够在客户端生成矩阵二维码QRCode 的jquery插件 ,使用它可以很方便的在页面上生成二维条码.此插件是能够独立使用的,体积也比较         ...

  2. CSS兼容性(IE和Firefox)技巧大全

    CSS对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理技巧并整理了一下.对于web2.0的过度,请尽量用xhtml格 ...

  3. Maven问题总结:could not resolve archetype xxxxxxx from any of the configured repositories

    错误提示 Eclipse中通过Archetype创建Maven项目时报错:Could not resolve archetype xxxxxxx from any of the configured ...

  4. 常用Ubuntu 命令

    sudo apt-get updatesudo apt-get upgrade以下2選1sudo apt-get install ubuntu-desktop如果你只想安装必要的桌面管理软件而不想安装 ...

  5. 使用Nsight查找CE3的渲染bug

    工作临时的接的一个小任务,查找ce3引擎修改后在绘制上出的一点bug 在代码的底层调用代码做了一些修改后,场景里的绘制的问题,因为也是刚接触CE3代码,也只能通过Nsight来查找问题了.   首先用 ...

  6. 运维工程师必会的109个Linux命令

    运维工程师必会的109个Linux命令 版本1.0 崔存新 更新于2009-12-26 目录 1 文件管理 6 1.1 basename 6 1.2 cat 6 1.3 cd 7 1.4 chgrp ...

  7. 必应(Bing)每日图片获取API

    必应(Bing)每日图片获取API January 11, 2015 API http://lab.dobyi.com/api/bing.php 介绍 Value Description title ...

  8. EXT.NET入门必读

    Ext.Net是一个对ExtJS进行封装了的.net控件库,可以在ASP.NET WebForm和MVC中使用.从今天开始记录我的学习笔记,这是第一篇,今天学习了如何在WebForm中使用Ext.Ne ...

  9. 1763 An Essay towards solving a Problem in the Doctrine of Chances

    https://en.wikipedia.org/wiki/An_Essay_towards_solving_a_Problem_in_the_Doctrine_of_Chances

  10. ArcGIS Server 缓存服务增加新比例尺缓存

    win10 + Server 10.4 +  ArcMap 10.4  操作简单说明: ①窗口上方Customize栏→Toolbars→ Customize→ 搜索到 manege map serv ...