金山的一个居于inotify+rsync进行二次开发实现文件同步的小工具sersync,能够很方便的实现文件触发式同步

Inotify 是基于inode级别的文件系统监控技术,是一种强大的、细粒度的、异步的机制,它满足各种各样的文件监控需要,不仅限于安全和性能,内核要求2.6.13以上,inotify能监控非常多的文件系统事件,通过监控这些事件来监控文件是否发生变更,然后通过rsync来更新发生变更的文件

rsync,remote synchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好

sersync利用inotify与rsync对服务器进行实时同步,其中inotify用于监控文件系统事件,rsync是目前广泛使用的同步算法,其优点是只对文件不同的部分进行操作,所以其优势大大超过使用挂接文件系统的方式进行镜像同步。由金山的周洋开发完成,是目前使用较多的文件同步工具之一。该工具和其他的工具相比有如下优点:

  • sersync是使用c++编写,由于只同步发生更改的文件,因此比其他同步工具更节约时间、带宽;
  • 安装方便、配置简单;
  • 使用多线程进行同步,能够保证多个服务器实时保持同步状态;
  • 自带出错处理机制,通过失败队列对出错的文件重新出错,如果仍旧失败,则每10个小时对同步失败的文件重新同步;
  • 自带crontab功能,只需在xml配置文件中开启,即可按您的要求,隔一段时间整体同步一次;
  • 自带socket与http协议扩展,你可以方便的进行二次开发;

步骤

1.主和从服务器都安装rsync,然后rsync的配置文件和密码文件配置都需要自己建立

vim /etc/rsyncd.conf 内容范例如下

id=root
gid=root
max connections=36000
use chroot=no
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock

[tlw.kk22.com]
path=/data0/web/tlw.kk22.com
#comment = 0019 web sersync
ignore errors = yes
read only = no
hosts allow = 192.168.1.237 192.168.1.238
hosts deny = *
auth users = root
secrets file = /etc/rsyncd.passwd

vim /etc/rsyncd.passwd 内容范例如下:

root:123456

需要设置密码文件为600权限,不然同步的时候可能会报错

2.启动rsync服务,一般有两种方式启动,通过daemon的方式启动或者xinetd集成启动方式

/usr/bin/rsync --daemon --config=/etc/rsyncd.conf

查看进程是否启动

ps -ef | grep rsync

3.安装sersync

下载sersync包,sersync2.5_64bit_binary_stable_final.tar.gz

解压后拷贝到安装路径   mv GNU-Linux-x86/*   /usr/local/sersync

4.serysnc配置文件设置,vim /usr/local/sersync/confxml.xml

......

<sersync>

<localpath watch="/data0/web/tlw.kk22.com">

<!—-设置监控的目录-->

<remote ip="192.168.1.227" name="tlw.kk22.com"/>

<!—设置从服务器的IP-->

<!--<remote ip="192.168.8.39" name="tongbu"/>-->

<!--<remote ip="192.168.8.40" name="tongbu"/>-->

</localpath>

<rsync>

<commonParams params="-artuz"/>

<auth start="true" users="root" passwordfile="/etc/rsyncd.secret"/>

<!—-设置同步的用户名和密码文件-->

<userDefinedPort start="true" port="873"/><!-- port=874 -->

<!—-设置rsync的端口,要和从那边开启的端口一致-->

<timeout start="false" time="100"/><!-- timeout=100 -->

<ssh start="false"/>

</rsync>

<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->

<crontab start="true" schedule="300"><!--600mins-->

<!—-设置300分钟全部同步一次-->

5.sersync密码文件配置

vim /etc/rsyncd.secret

123456

主服务器的密码配置文件不需要用户,如果添加用户的话同步的时候会报错

6.启动sersync

/usr/local/sersync/sersync2 -d -r -o /usr/local/sersync/confxml.xml

查看进程

ps -ef | grep sersync

将上面的命令添加进/etc/rc.local,以后开机自动启动

7.测试是否触发同步

8.脚本自动监控,防止sersync脚本关掉,自动的去检测该进程是否存在,不存在就启动,脚本内容如下:

#!/bin/bash

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

脚本写好以后,添加到计划任务中去

*/5 * * * * /var/script/check_sersync.sh > /dev/null 2>&1

9.skill掉sersync,测试脚本自动启动

sersync实现触发式同步的更多相关文章

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

    Sersync实现触发式文件同步 替代inotify和rsync Pyinotify是一个Python模块,用来监测文件系统的变化. Pyinotify依赖于Linux内核的功能—inotify(内核 ...

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

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

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

    inotify 的同步备份机制有着缺点,于是看了sersync同步,弥补了rsync的缺点.以下转自:http://www.osyunwei.com/archives/7447.html 前言: 一. ...

  4. rsync+sersync实现文件实时同步

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

  5. Rsync+sersync实现数据实时同步

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

  6. CentOS7下Rsync+sersync实现数据实时同步

    近期公司要上线新项目,后台框架选型我选择当前较为流行的laravel,运行环境使用lnmp. 之前我这边项目tp32+apache,开发工具使用phpstorm. 新建/编辑文件通过phpstorm配 ...

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

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

  8. EDM备忘录:触发式邮件订阅和退订功能介绍

    一般来说,有触发式邮件订阅和退订功能是邮件模板设计中必不可少的两项功能,下面博主为大家介绍一下. 若客户在订阅后不想再收到这类邮件即可选择退订,将不再收到该IP地址的推广邮件,避免客户在继续收到这类邮 ...

  9. Linux下inotify监控文件夹状态,发生变化后触发rsync同步

    1.安装工具--inotifywget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar ...

随机推荐

  1. extern 和 static和 今天的一些代码,12-03

    这是关于标识符的链接属性的,链接属性只有三种:external, internal, none 改变规则: 3.1 文件作用域的变量和函数定义,即在所有 代码块和参数列表之外的标识符,使用static ...

  2. 简述Mesos API–files

    Below is a set of endpoints available on a Mesos agent. These endpoints are reachable at the address ...

  3. dd命令使用详解

    dd命令使用详解 http://www.cnblogs.com/qq78292959/archive/2012/02/23/2364760.html 1.命令简介 dd 的主要选项: 指定数字的地方若 ...

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

    Sersync实现触发式文件同步 替代inotify和rsync Pyinotify是一个Python模块,用来监测文件系统的变化. Pyinotify依赖于Linux内核的功能—inotify(内核 ...

  5. IntelliJ IDEA 的 Java 热部署插件 JRebel 安装及使用

    JRebel 介绍 JRebel for Intellij JRebel 在 Java Web 开发中, 一般更新了 Java 文件后要手动重启 Tomcat 服务器, 才能生效,  自从有了 JRe ...

  6. [HDF]hdf-4.2.6类库的使用

    HDF文件包括科学数据和VData部分.读取HDF格式的calipso数据,用GDAL可以方便的读取其中的子数据集,但是没有发现GDAL中提供读取Vdata的方法.所以只好考虑借助hdf-4.2.6类 ...

  7. hadoop NameNode HA 和ResouceManager HA

    官网配置地址: HDFS HA : http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HDFSHighAvai ...

  8. javascript表单操作方法

    一.Form元素 相关属性: 1,action属性 2,elements属性 3,length属性 4,name属性 5, method属性 如果多个表单字段的name属性相同,那么提交的value就 ...

  9. Windows 7 / Windows 10 安装 IPX/SPX

    以我的系统为例: Windows 7/10 x64 首先下载 NWLINK IPX/SPX 驱动(这是 Microsoft 对 IPX/SPX 的实现.) http://pan.baidu.com/s ...

  10. iOS截图

    1.普通的截图办法,在View上面截图 /** * 截图代码 * * @param view 需要截图的view * @param rect 需要截取的区域 * * @return 返回截取的对象 * ...