精华内容
下载资源
问答
  • sersync

    2020-07-10 11:09:58
    1.什么是实 同步 ​ 只要当前目录发生变化则会触发一个事件,事件触发后将变换的目录同步到远程服务器。 2.实时同步的原理 ...​ sersync、inotify+rsync,通常我们会选择sersyncsersync是国人基于rs

    1.什么是实 同步

    ​ 只要当前目录发生变化则会触发一个事件,事件触发后将变换的目录同步到远程服务器。

    2.实时同步的原理

    ​ 实时同步需要借助lnotify通知接口,用来监控本地目录的变化,如果监控本地的目录发生变更。就触发动作,这个动作可以进行实时同步,或者其他操作。

    3.实时同步的场景

    ​ 场景1:解决nfs单点故障。保证同步的数据连续性。

    ​ 场景2:本地无缝迁移云端。
    在这里插入图片描述

    4.实时同步工具选择

    ​ sersync、inotify+rsync,通常我们会选择sersync,sersync是国人基于rssync+inotify基础之上开发的工具,不仅保留了优点同时还强化了实时监控,文件过滤,简化配置等功能,帮助用户提高运行效率,节省时间和网络资源。

    5.完整的项目案例

    ( web + NFS + Sersync + Rsync )

    在这里插入图片描述

    web服务器的操作:

    1.搭建web服务器,部署网盘项目,然后测试上传。

    1)创建用户

    [root@web01 ~]# groupadd -g 666 www
    [root@web01 ~]# useradd -u666 -g666 www
    

    2)安装软件

    [root@web01 ~]# yum install httpd php php-mbstring php-gd -y
    

    3)修改httpd.conf的配置,将用户运行的进程修改为www

    [root@web01 ~]# sed -i '/^User/c User www' /etc/httpd/conf/httpd.conf
    [root@web01 ~]# sed -i '/^Group/c Group www' /etc/httpd/conf/httpd.conf
    

    4)重启Httpd进程

    [root@web01 ~]# systemctl restart httpd
    [root@web01 ~]# ps aux|grep httpd
    root      44986  0.5  1.2 310456 12000 ?        Ss   09:42   0:00 /usr/sbin/httpd -DFOREGROUND
    www       44987  0.0  0.6 312540  6396 ?        S    09:42   0:00 /usr/sbin/httpd -DFOREGROUND
    www       44988  0.0  0.6 312540  6396 ?        S    09:42   0:00 /usr/sbin/httpd -DFOREGROUND
    www       44989  0.0  0.6 312540  6396 ?        S    09:42   0:00 /usr/sbin/httpd -DFOREGROUND
    www       44990  0.0  0.6 312540  6396 ?        S    09:42   0:00 /usr/sbin/httpd -DFOREGROUND
    www       44991  0.0  0.6 312540  6396 ?        S    09:42   0:00 /usr/sbin/httpd -DFOREGROUND
    

    5)上传代码

    [root@web01 ~]# cd /var/www/html/
    [root@web01 html]# wget http://static.kodcloud.com/update/download/kodexplorer4.40.zip
    [root@web01 html]# unzip kodexplorer4.40.zip
    [root@web01 html]# chown -R www.www /var/www/html/
    

    2.捕获上传的静态资源所存放的位置。
    /var/www/html/data/User/admin/home

    NFS服务器的操作:

    1.安装配置NFS服务,将web静态资源存放的位置,挂载至NFS的共享目录中。

    1)安装nfs服务端

    [root@nfs ~]# yum install nfs-utils -y
    

    2)配置nfs服务端

    [root@nfs ~]# cat /etc/exports
    /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
    

    3)创建UID、GID为666的用户

    [root@nfs ~]# groupadd -g 666 www
    [root@nfs ~]# useradd -u666 -g666 www
    

    4)创建对外共享的目录

    ( 空间要大,可以是一个新挂载的存储盘 )

    [root@nfs ~]# mkdir /data
    [root@nfs ~]# chown -R www.www /data
    

    5)重启NFS服务

    [root@nfs ~]# systemctl restart nfs
    

    6) 在web节点上,将静态资源目录的数据推送到NFS存储上。

    [root@web01 html]# cd /var/www/html/data/User/admin/home/
    [root@web01 home]# scp -rp * root@172.16.1.31:/data
    

    7) 在web节点上,执行挂载操作。

    [root@web01 admin]# mount -t nfs 172.16.1.31:/data /var/www/html/data/User/admin/home/
    

    2.再次进行上传测试,检查上传的资源是否已经成功的写入到NFS存储中。

    [root@nfs ~]# ll /data
    -rw-r--r-- 1 www www 112114508 4月  17 09:48 05 老男孩教育-标杆班级-NFS总结.mp4
    -rw-r--r-- 1 www www 101872284 4月  17 09:57 06 老男孩教育-标杆班级-NFS练习.mp4
    drwxr-xr-x 2 www www       210 4月  17 09:46 desktop
    drwxr-xr-x 2 www www         6 4月  17 09:46 视频
    drwxr-xr-x 2 www www         6 4月  17 09:46 图片
    drwxr-xr-x 2 www www         6 4月  17 09:46 我的文档
    drwxr-xr-x 2 www www         6 4月  17 09:46 音乐
    

    NFS如果一旦故障,那么资源就会丢失,我们需要给 NFS 增加一个备用节点。

    1.需要实时监控NFS的/data目录,一旦发生变化,就马上同步到Backup服务器。 需要在NFS上安装Sersync
    2.Backup服务器是不是需要准备一个目录接收NFS推送过来的数据。  /data 目录
    3.假设NFS故障,如何快速将Backup顶用起来。需要Backup也做成一个NFS服务端,共享/data目录。
    

    Backup服务器:

    1)安装rsync

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

    2)配置rsync

    [root@backup ~]# cat /etc/rsyncd.conf
    uid = www
    gid = www
    port = 873
    fake super = yes
    use chroot = no
    max connections = 200
    timeout = 600
    ignore errors
    read only = false
    list = false
    auth users = rsync_backup
    secrets file = /etc/rsync.passwd
    log file = /var/log/rsyncd.log
    #####################################
    [backup]
    comment = welcome to oldboyedu backup!
    path = /backup
    
    [data]
    path = /data
    

    3)根据配置完成对应初始化操作

    [root@backup ~]# groupadd -g 666 www
    [root@backup ~]# useradd -u 666 -g666 www
    [root@backup ~]# mkdir /backup /data
    [root@backup ~]# chown -R www.www /backup/ /data/
    [root@backup ~]# echo "rsync_backup:123456" > /etc/rsync.passwd
    [root@backup ~]# chmod 600 /etc/rsync.passwd
    

    4)重启Rsync服务

    [root@backup ~]# systemctl restart rsyncd
    

    5)为backup服务器,启动NFS共享存储服务。

    [root@backup ~]# yum install nfs-utils -y
    [root@backup ~]# cat /etc/exports
    /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
    
    [root@backup ~]# systemctl enable nfs
    sys[root@backup ~]# systemctl start nfs
    

    配置NFS实时同步

    需要监控NFS的/data目录

    1.下载并解压sersync软件包
    https://github.com/wsgzao/sersync/raw/master/sersync2.5.4_64bit_binary_stable_final.tar.gz

    [root@nfs ~]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz
    [root@nfs ~]# mv GNU-Linux-x86/ /usr/local/sersync
    [root@nfs ~]# vim /usr/local/sersync/confxml.xml
    
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <head version="2.5">
        <host hostip="localhost" port="8008"></host>
        <debug start="false"/>
        <fileSystem xfs="true"/>
        <filter start="false">
    	<exclude expression="(.*)\.svn"></exclude>
    	<exclude expression="(.*)\.gz"></exclude>
    	<exclude expression="^info/*"></exclude>
    	<exclude expression="^static/*"></exclude>
        </filter>
        <inotify>
    	<delete start="true"/>
    	<createFolder start="true"/>
    	<createFile start="true"/>
    	<closeWrite start="true"/>
    	<moveFrom start="true"/>
    	<moveTo start="true"/>
    	<attrib start="true"/>
    	<modify start="true"/>
        </inotify>
    
        <sersync>
    	<localpath watch="/data">   <!--表示我要监控本地/data目录,当发生了inotify中的事件,则执行动作-->
    	    <remote ip="172.16.1.41" name="data"/>    <!--推送/data目录的数据到172.16.1.41 的data模块-->
    	</localpath>
    	<rsync>	<!--配置rsync的传输参数,以及连接服务端的用户名称,还有连接服务端需要使用的客户端密码-->
    	    <commonParams params="-avz"/>
    	    <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.pass"/>
    	    <userDefinedPort start="false" port="874"/><!-- port=874 -->
    	    <timeout start="true" time="100"/><!-- timeout=100 -->
    	    <ssh start="false"/>
    	</rsync>
    	<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
    	<crontab start="false" schedule="600"><!--600mins-->
    	    <crontabfilter start="false">
    		<exclude expression="*.php"></exclude>
    		<exclude expression="info/*"></exclude>
    	    </crontabfilter>
    	</crontab>
    	<plugin start="false" name="command"/>
        </sersync>
    <!--下面的内容可以直接 忽略-->
        <plugin name="command">
    	<param prefix="/bin/sh" suffix="" ignoreError="true"/>	<!--prefix /opt/tongbu/mmm.sh suffix-->
    	<filter start="false">
    	    <include expression="(.*)\.php"/>
    	    <include expression="(.*)\.sh"/>
    	</filter>
        </plugin>
    
        <plugin name="socket">
    	<localpath watch="/opt/tongbu">
    	    <deshost ip="192.168.138.20" port="8009"/>
    	</localpath>
        </plugin>
        <plugin name="refreshCDN">
    	<localpath watch="/data0/htdocs/cms.xoyo.com/site/">
    	    <cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/>
    	    <sendurl base="http://pic.xoyo.com/cms"/>
    	    <regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/>
    	</localpath>
        </plugin>
    </head>
    
    看文档
    /usr/local/sersync/sersync2 -h
    set the system param
    execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches
    execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events
    parse the command param
    _______________________________________________________
    参数-d:启用守护进程模式
    参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍
    c参数-n: 指定开启守护线程的数量,默认为10个
    参数-o:指定配置文件,默认使用confxml.xml文件
    参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块
    参数-m:单独启用其他模块,使用 -m socket 开启socket模块
    参数-m:单独启用其他模块,使用 -m http 开启http模块
    不加-m参数,则默认执行同步程序
    
    
    [root@nfs ~]# /usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml
    
    不同步手动试一下
    [root@nfs ~]# cd /data && rsync -avz -R --delete ./  --timeout=100 rsync_backup@172.16.1.41::data --password-file=/etc/rsync.pass
    
    解决完杀掉重试试
    [root@nfs ~]# ps -ef | grep sersync
    

    NFS故障了,如何实现切换

    1.停止nfs服务

    [root@nfs ~]# systemctl stop nfs
    

    2.web切换操作

    [root@web01 ~]# umount -lf /var/www/html/data/User/admin/home && mount -t nfs 172.16.1.41:/data /var/www/html/data/User/admin/hom	e
    
    展开全文
  • sersync共享

    2018-08-06 20:26:03
    sersync 配合rsync 实现文件的实时共享。需要的伙伴自己下
  • Linux同步sersync

    2018-01-24 10:50:31
    Linux同步sersync
  • 上面的工作做好之后呢,下面就开始正式配置我们的 Sersync 了! 我们在 Sersync 安装过程中所用到包均是从谷歌 Sersync 项目组取得的,地址: https://code.google.com/p/sersync/downloads/list 这里,我...

    上面的工作做好之后呢,下面就开始正式配置我们的 Sersync 了!

     

    我们在 Sersync 安装过程中所用到包均是从谷歌 Sersync 项目组取得的,地址:

     

    https://code.google.com/p/sersync/downloads/list

     

    这里,我所用的将是这个 sersync2.5.4_64bit_binary_stable_final.tar.gz 的 64 位可执行文

     

     

    件版本,里面已经包含了配置文件与可执行文件。下面的操作也都是基于该版本去做的。

     

     

     

     

     

     

     

     

    1 准备 Sersync 的安装包

     

     

    [root@SERSYNC ~]# mkdir /source/

     

     

    [root@SERSYNC ~]# cd /source/

     

     

    [root@SERSYNC ~]# wget https://sersync.googlecode.com/files/sersync2.5.4_64bit_binary

     

     

    _stable_final.tar.gz

     

     

    [root@SERSYNC source]# tar zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz

     

     

    GNU-Linux-x86/

     

     

    GNU-Linux-x86/sersync2

     

     

    GNU-Linux-x86/confxml.xml

     

    2、安装 Sesync

     

     

    [root@SERSYNC source]# cp -r GNU-Linux-x86 /usr/local/sersync

     

     

    [root@SERSYNC source]# tree /usr/local/sersync

     

    /usr/local/sersync

     

    ├── confxml.xml

     

    └── sersync2

     

    0 directories, 2 files

     

    3、规范 Sersync 目录结构

     

    [root@SERSYNC source]# cd /usr/local/sersync

     

     

    [root@SERSYNC sersync]# mv confxml.xml conf

     

    [root@SERSYNC sersync]# mv sersync2 bin/sersync

     

    [root@SERSYNC sersync]# tree

     

    ├── bin

     

    │  └── sersync

     

    ├── conf

     

     

    │  └── confxml.xml

     

     

    └── logs

     

     

    3 directories, 2 files

    转载于:https://www.cnblogs.com/fanweisheng/p/11327439.html

    展开全文
  • Linux下Rsync+sersync实现数据实时同步

    万次阅读 2019-09-02 11:33:09
    一、为什么要用Rsync+sersync架构? 1、sersync是基于Inotify开发的,类似于Inotify-tools的工具 2、sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字,然后使用...

    一、为什么要用Rsync+sersync架构?

    1、sersync是基于Inotify开发的,类似于Inotify-tools的工具

    2、sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的这个文件或者这个目录。

    二、Rsync+Inotify-tools与Rsync+sersync这两种架构有什么区别?

    1、Rsync+Inotify-tools

    (1):Inotify-tools只能记录下被监听的目录发生了变化(包括增加、删除、修改),并没有把具体是哪个文件或者哪个目录发生了变化记录下来;

    (2):rsync在同步的时候,并不知道具体是哪个文件或者哪个目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此,效率很低。

    2、Rsync+sersync

    (1):sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字

    (2):rsync在同步的时候,只同步发生变化的这个文件或者这个目录每次发生变化的数据相对整个同步目录数据来说是很小的,rsync在遍历查找比对文件时,速度很快),因此,效率很高。

    小结:当同步的目录数据量不大时,建议使用Rsync+Inotify-tools;当数据量很大(几百G甚至1T以上)、文件很多时,建议使用Rsync+sersync

    说明:

    操作系统:CentOS 7.4

    源服务器:192.168.1.10  (Sersync+web)(Master 作为主发布服务器)

    目标服务器: 192.168.1.11、(Rsync+web)(此处可逐步增加集群的slave)

    目的:把源服务器上/home/rsync目录实时同步到目标服务器的/home/Sync

    具体操作:

    第一部分:分别在两台目标服务器192.168.1.11上操作

    一、在在目标服务器安装Rsync服务端

    1、关闭SELINUX

    #vi /etc/selinux/config #编辑防火墙配置文件

    #SELINUX=enforcing#注释掉

    #SELINUXTYPE=targeted#注释掉

    SELINUX=disabled#增加

    :wq! #保存,退出

    setenforce 0 #立即生效

    2、开启防火墙tcp 873端口(Rsync默认端口)

    #vi /etc/sysconfig/iptables #编辑防火墙配置文件

    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -ptcp --dport 873 -j ACCEPT

    :wq! #保存退出

    #systemctl restart firewalld.service #最后重启防火墙使配置生效

    或者不想麻烦直接关掉防火墙

    3、安装Rsync服务端软件

    #yum install rsync xinetd -y #安装

    # vi /etc/rc.d/rc.local      #设置开机启动

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

    :wq! #保存退出

    # chmod +x/etc/rc.d/rc.local  #否则重启不执行 

    # systemctl start xinetd #启动(CentOS中是以xinetd来管理Rsync服务的

    4、创建rsyncd.conf配置文件

    #vi /etc/rsyncd.conf #创建配置文件,添加以下代码

    log file =/var/log/rsyncd.log #日志文件位置,启动rsync后自动产生这个文件,无需提前创建

    pidfile =/var/run/rsyncd.pid #pid文件的存放位置

    lock file =/var/run/rsync.lock #支持max connections参数的锁文件

    secretsfile = /etc/rsync.pass  #用户认证配置文件,里面保存用户名称和密码,后面会创建这个文件

    motd file =/etc/rsyncd.Motd #rsync启动时欢迎信息页面文件位置(文件内容自定义)

    [rsync] #自定义名称

    path = /home/rsync/#rsync服务端数据目录路径

    comment = rsync#模块名称与[md]自定义名称相同

    uid = root #设置rsync运行权限为root

    gid = root #设置rsync运行权限为root

    port=873  #默认端口

    use chroot= no #默认为true,修改为no,增加对目录文件软连接的备份

    read only =no  #设置rsync服务端文件为读写权限

    list = no #不显示rsync服务端资源列表

    maxconnections = 200 #最大连接数

    timeout =600  #设置超时时间

    auth users= Sync #执行数据同步的用户名,可以设置多个,用英文状态下逗号隔开

    hosts allow= 192.168.1.10 #允许进行数据同步的客户端IP地址,可以设置多个,用英文状态下逗号隔开

    hosts deny=  #禁止数据同步的客户端IP地址,可以设置多个,用英文状态下逗号隔开

    :wq!  #保存,退出(贴进配置文件将中文去掉,否则可能造成无法识别模块

    代码:

    log file = /var/log/rsyncd.log

    pidfile = /var/run/rsyncd.pid

    lock file = /var/run/rsync.lock

    secretsfile = /etc/rsync.pass

    motd file = /etc/rsyncd.Motd

    [rsync]

    path = /mnt/www/XXX

    comment = rsync

    uid = www

    gid = www

    port= 873

    use chroot= no

    read only = no

    list = no

    maxconnections = 200

    timeout = 600

    auth users= rsync

    hosts allow= *

    5、创建用户认证文件

    #vi/etc/rsync.pass #配置文件,添加以下内容,添加允许传输用户和密码

    rsync:abc123456  #格式,用户名:密码,可以设置多个,每行一个用户名:密码

    :wq!  #保存退出

    6、设置文件权限

    #chmod 600 /etc/rsyncd.conf  #设置文件所有者读取、写入权限

    #chmod 600 /etc/rsync.pass  #设置文件所有者读取、写入权限

    7、启动rsync

    # systemctl start xinetd  #启动

    # systemctl stop xinetd  #停止

    # systemctl restart xinetd  #重新启动

    第二部分:在源服务器192.168.1.10上操作

    一、安装Rsync客户端

    1、关闭SELINUX

    #vi /etc/selinux/config  #编辑防火墙配置文件

    #SELINUX=enforcing  #注释掉

    #SELINUXTYPE=targeted #注释掉

    SELINUX=disabled  #增加

    :wq!  #保存退出

    #setenforce 0   #立即生效

    2、开启防火墙tcp 873端口(Rsync默认端口,做为客户端的Rsync可以不用开启873端口

    #vi /etc/sysconfig/iptables  #编辑防火墙配置文件

    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -ptcp --dport 873 -j ACCEPT

    :wq! #保存退出

    # systemctl restartfirewalld.service #最后重启防火墙使配置生效

    3、安装Rsync客户端端软件

    #whereisrsync  #查看系统是否已安装rsync,出现下面的提示,说明已经安装

    rsync:/usr/bin/rsync /usr/share/man/man1/rsync.1.gz

    #yum install  xinetd  #只安装xinetd即可,CentOS中是以xinetd来管理rsync服务的

    #yum install rsync xinetd #如果默认没有rsync,运行此命令进行安装rsync和xinetd

    # vi /etc/rc.local      #设置开机启动

    /usr/bin/rsync --daemon

    #vi /etc/reyncd.conf

    log file = /var/log/rsyncd.log

    pidfile = /var/run/rsyncd.pid

    lock file = /var/run/rsync.lock

    motd file = /etc/rsyncd.Motd

    [rsync]

    comment = rsync

    uid = www

    gid = www

    port=873

    :wq退出

    # chmod +x /etc/rc.d/rc.local  #否则重启不执行

     

    #systemctl start xinetd  #启动(CentOS中是以xinetd来管理rsync服务的)

    4、创建认证密码文件

    #vi /etc/passwd.txt  #编辑文件,添加以下内容,该密码应与目标服务器中的/etc/rsync.pass中的密码一致,

    abc123456 #密码

    :wq! #保存退出

    #chmod 600 /etc/passwd.txt #设置文件权限,只设置文件所有者具有读取、写入权限即可

    5、测试源服务器192.168.1.10目标服务器 192.168.1.11之间的数据同步

    #mkdir -p /home/rsync/test  #在源服务器上创建测试文件夹,然后在源服务器运行下面1行命令

    rsync -avH --port=873 --progress--delete  /home/rsync/ rsync@192.168.1.11::rsync--password-file=/etc/passwd.txt

    运行完成后,分别在目标服务器192.168.1.11上查看,在/home/Sync/目录下有ceshi文件夹,说明数据同步成功,命令中目录可以随意目录,传输到目标服务器目录时文件(或目录)均放到/etc/rsyncd.conf配置的服务器目录路径,如果源目录改变了,那么传输时两个目录将进行目录匹配,会有增删动作,因此需要注意。

    二、安装sersync工具,实时触发rsync进行同步

    1、查看服务器内核是否支持inotify

    ll /proc/sys/fs/inotify  #列出文件目录,出现下面的内容,说明服务器内核支持inotify

    -rw-r--r-- 1 root root 0 Mar  7 02:17 max_queued_events

    -rw-r--r-- 1 root root 0 Mar  7 02:17 max_user_instances

    -rw-r--r-- 1 root root 0 Mar  7 02:17 max_user_watches

    备注:Linux下支持inotify的内核最小为2.6.13,可以输入命令:#uname -a查看内核

    CentOS 7.4内核为3.10.0,默认已经支持inotify

    2、修改inotify默认参数(inotify默认内核参数值太小)

    查看系统默认参数值:

    sysctl -a | grep max_queued_events

    结果是:fs.inotify.max_queued_events= 16384

    sysctl -a | grep max_user_watches

    结果是:fs.inotify.max_user_watches= 8192

    sysctl -a | grep max_user_instances

    结果是:fs.inotify.max_user_instances= 128

    修改参数:

    #sysctl -wfs.inotify.max_queued_events="99999999"

    #sysctl -w fs.inotify.max_user_watches="99999999"

    #sysctl -wfs.inotify.max_user_instances="65535"

    #vi /etc/sysctl.conf #添加以下代码

    fs.inotify.max_queued_events=99999999

    fs.inotify.max_user_watches=99999999

    fs.inotify.max_user_instances=65535

    :wq! #保存退出

    参数说明:

    max_queued_events

    inotify队列最大长度,如果值太小,会出现"** Event QueueOverflow **"错误,导致监控文件不准确

    max_user_watches

    要同步的文件包含多少目录,可以用:find /home/Sync-type d | wc -l 统计,必须保证max_user_watches值大于统计结果(这里/home/Sync为同步文件目录)

    max_user_instances

    每个用户创建inotify实例最大值

    3、安装sersync

    sersync下载地址:https://sersync.googlecode.com/files/sersync2.5.4_64bit_binary_stable_final.tar.gz

    上传sersync2.5.4_64bit_binary_stable_final.tar.gz到/usr/local/src目录下

    #cd /usr/local/src

    #tar zxvfsersync2.5.4_64bit_binary_stable_final.tar.gz  #解压

    #mv GNU-Linux-x86  /usr/local/sersync  #移动目录到/usr/local/sersync

    4、配置sersync

    #cd  /usr/local/sersync #进入sersync安装目录

    #cp confxml.xml confxml.xml-bak  #备份原文件

    #vi confxml.xml  #编辑,修改下面的代码

    <?xmlversion="1.0" encoding="ISO-8859-1"?>

    <headversion="2.5">

    <host hostip="localhost"port="8008"></host>

    <debugstart="false"/>

    <fileSystemxfs="false"/>

    <filterstart="false">

    <excludeexpression="(.*)\.svn"></exclude>

    <excludeexpression="(.*)\.gz"></exclude>

    <excludeexpression="^info/*"></exclude>

    <exclude expression="^static/*"></exclude>

    </filter>

    <inotify>

    <deletestart="true"/>

    <createFolderstart="true"/>

    <createFilestart="false"/>

    <closeWritestart="true"/>

    <moveFromstart="true"/>

    <moveTostart="true"/>

    <attribstart="false"/>

    <modifystart="false"/>

    </inotify>

    <sersync>

    <localpath watch="/home/rsync">

    <remote ip="192.168.1.11" name="rsync"/>

    <!--<remoteip="192.168.1.40" name="tongbu"/>-->

    <!--<remoteip="192.168.1.40" name="tongbu"/>-->

    </localpath>

    <rsync>

    <commonParams params="-artuz"/>

    <auth start="true" users="rsync"passwordfile="/etc/passwd.txt"/>

    <userDefinedPortstart="false" port="874"/><!-- port=874 -->

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

    <sshstart="false"/>

    </rsync>

    <failLogpath="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--defaultevery 60mins execute once-->

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

    <crontabfilterstart="false">

    <excludeexpression="*.php"></exclude>

    <excludeexpression="info/*"></exclude>

    </crontabfilter>

    </crontab>

    <plugin start="false"name="command"/>

    </sersync>

    <pluginname="command">

    <paramprefix="/bin/sh" suffix=""ignoreError="true"/> <!--prefix /opt/tongbu/mmm.sh suffix-->

    <filterstart="false">

    <includeexpression="(.*)\.php"/>

    <includeexpression="(.*)\.sh"/>

    </filter>

    </plugin>

    <pluginname="socket">

    <localpathwatch="/opt/tongbu">

    <deshostip="192.168.1.20" port="8009"/>

    </localpath>

    </plugin>

    <pluginname="refreshCDN">

    <localpathwatch="/data0/htdocs/cms.xoyo.com/site/">

    <cdninfodomainname="ccms.chinacache.com" port="80"username="xxxx" passwd="xxxx"/>

    <sendurlbase="http://pic.xoyo.com/cms"/>

    <regexurlregex="false"match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/>

    </localpath>

    </plugin>

    </head>

    :wq!  #保存退出

    参数说明:

    localpath watch="/home/rsync"#源服务器同步目录

     192.168.1.11#目标服务器IP地址

    name="rsync": #目标服务器rsync同步目录模块名称

    users="rsync": #目标服务器rsync同步用户名

    passwordfile="/etc/passwd.pass" #目标服务器rsync同步用户的密码在源服务器的存放路径

    remote ip="192.168.1.11": #目标服务器ip,每行一个

    failLogpath="/tmp/rsync_fail_log.sh" #脚本运行失败日志记录

    start="true"  #设置为true,每隔600分钟执行一次全盘同步

    5、设置sersync监控开机自动执行

    #vi /etc/rc.d/rc.local  #编辑,在最后添加一行

    /usr/local/sersync/sersync2 -d -r -o  /usr/local/sersync/confxml.xml #设置开机自动运行脚本

    :wq!  #保存退出

    # chmod +x /etc/rc.d/rc.local   #否则重启不执行

    6、添加脚本监控sersync是否正常运行

    #mkdir  /home/crontab

    #vi  /home/crontab/check_sersync.sh  #编辑,添加以下代码

    #!/bin/sh

    sersync="/usr/local/sersync/sersync2"

    confxml="/usr/local/sersync/confxml.xml"

    status=$(ps -aux |grep 'sersync2'|grep -v 'grep'|wc -l)

    if [$status -eq 0 ];

    then

    $sersync -d -r -o $confxml &

    else

    exit 0;

    fi

    :wq!  #保存退出

    #chmod +x /home/crontab/check_sersync.sh#添加脚本执行权限

    #vi /etc/crontab #编辑,在最后添加下面一行

    */5 * * * * root /home/crontab/check_sersync.sh >/dev/null 2>&1  #每隔5分钟执行一次脚本

    #重新加载服务

    #systemctl restart crond.service

    6、测试sersync实时触发rsync同步脚本是否正常运行

    在源服务器192.168.1.10上创建文件inotify_rsync_ceshi

    #mkdir /home/rsync/inotify_rsync_ceshi

    重新启动源服务器:192.168.1.10

    等系统启动之后,查看两台目标服务器 192.168.1.30,192.168.1.31的/home/Sync下是否有inotify_rsync_ceshi文件夹

    然后再在源服务器192.168.1.10创建文件夹inotify_rsync_ceshi_new

    mkdir /home/rsync/inotify_rsync_ceshi_new

    继续查看两台目标服务器 192.168.1.30,192.168.1.31的//home/rsync下是否有inotify_rsync_ceshi_new文件夹

    如果以上测试都通过,说明inotify实时触发rsync同步脚本运行正常。

    至此,Linux下Rsync+sersync实现数据实时同步完成。

    扩展阅读:

    rsync参数

    -v, --verbose 详细模式输出

    -q, --quiet 精简输出模式

    -c, --checksum 打开校验开关,强制对文件传输进行校验

    -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD

    -r, --recursive 对子目录以递归模式处理

    -R, --relative 使用相对路径信息

    -b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。

    --backup-dir 将备份文件(如~filename)存放在在目录下。

    -suffix=SUFFIX 定义备份文件前缀

    -u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)

    -l, --links 保留软链结

    -L, --copy-links 想对待常规文件一样处理软链结

    --copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结

    --safe-links 忽略指向SRC路径目录树以外的链结

    -H, --hard-links 保留硬链结

    -p, --perms 保持文件权限

    -o, --owner 保持文件属主信息

    -g, --group 保持文件属组信息

    -D, --devices 保持设备文件信息

    -t, --times 保持文件时间信息

    -S, --sparse 对稀疏文件进行特殊处理以节省DST的空间

    -n, --dry-run现实哪些文件将被传输

    -W, --whole-file 拷贝文件,不进行增量检测

    -x, --one-file-system 不要跨越文件系统边界

    -B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节

    -e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步

    --rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息

    -C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件

    --existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件

    --delete 删除那些DST中SRC没有的文件

    --delete-excluded 同样删除接收端那些被该选项指定排除的文件

    --delete-after 传输结束以后再删除

    --ignore-errors 及时出现IO错误也进行删除

    --max-delete=NUM 最多删除NUM个文件

    --partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输

    --force 强制删除目录,即使不为空

    --numeric-ids 不将数字的用户和组ID匹配为用户名和组名

    --timeout=TIME IP超时时间,单位为秒

    -I, --ignore-times 不跳过那些有同样的时间和长度的文件

    --size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间

    --modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0

    -T --temp-dir=DIR 在DIR中创建临时文件

    --compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份

    -P 等同于 --partial

    --progress 显示备份过程

    -z, --compress 对备份的文件在传输时进行压缩处理

    --exclude=PATTERN 指定排除不需要传输的文件模式

    --include=PATTERN 指定不排除而需要传输的文件模式

    --exclude-from=FILE 排除FILE中指定模式的文件

    --include-from=FILE 不排除FILE指定模式匹配的文件

    --version 打印版本信息

    --address 绑定到特定的地址

    --config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件

    --port=PORT 指定其他的rsync服务端口

    --blocking-io 对远程shell使用阻塞IO

    -stats 给出某些文件的传输状态

    --progress 在传输时现实传输过程

    --log-format=formAT 指定日志文件格式

    --password-file=FILE 从FILE中得到密码

    --bwlimit=KBPS 限制I/O带宽,KBytes per second

    -h, --help 显示帮助信息

    本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-10/147900.htm

    展开全文
  • sersync-开源

    2021-05-30 22:00:25
    sersync 主要用于服务器同步和网络镜像。 它可以代替 inotify-tool+rsync 分辨率。
  • sersync服务

    2016-11-01 18:41:31
    1. 在网站的分发机器上安装sersync和rsync(rsync已经作为了svn服务器对应的服务端了) tar -zxf sersync2.5.4_64bit_binary_stable_final.tar.gz mkdir /usr/local/sersync/{etc,bin} -p cp GNU-Linux-...
     
    
    1. 在网站的分发机器上安装sersync和rsync(rsync已经作为了svn服务器对应的服务端了)
    tar -zxf sersync2.5.4_64bit_binary_stable_final.tar.gz    
    mkdir /usr/local/sersync/{etc,bin} -p

    cp GNU-Linux-x86/sersync2 /usr/local/sersync/bin/
    cp GNU-Linux-x86/confxml.xml /usr/local/sersync/etc/

    #新建一个rsync密码文件
    echo "1qaz2wsx" >> /usr/local/rsync/etc/zgxcw_im_server.pass
    chown -R root /usr/local/rsync/etc/zgxcw_im_server.pass
    chmod 600  /usr/local/rsync/etc/ zgxcw_im_server.pass

    2. 在所有客户端服务器安装rsync服务端
    tar -zxf rsync-3.1.0.tar.gz && cd rsync-3.1.0
    ./configure --prefix=/usr/local/rsync && make && make install
    cd /usr/local/rsync && mkdir etc

    vim /usr/local/rsync/etc/rsyncd.conf                                     
    -----------------------------------------------------------------
    uid=root
    gid=root
    max connections=36000
    use chroot=no
    log file=/usr/local/rsync/rsyncd.log
    pid file=/usr/local/rsync/rsyncd.pid
    lock file=/usr/local/rsync/rsyncd.lock

    [zgxcw_im_server]                                         
    path=/data/web/zgxcw_im_server                                   
    comment = www.meizi.com rsync web                     
    ignore errors = yes  
    read only = no
    hosts allow = 192.168.30.24                         
    hosts deny = *
    auth users = zgxcw                             
    secrets file = /usr/local/rsync/etc/ zgxcw_im_server.pass        
    -----------------------------------------------------------------
    echo "1qaz2wsx" >> /usr/local/rsync/etc/zgxcw_im_server.pass    
    chown -R root /usr/local/rsync/etc/zgxcw_im_server.pass
    chmod 600   /usr/local/rsync/etc/ zgxcw_im_server.pass
    mkdir /data/web/zgxcw_im_server -p
    /usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/etc/rsyncd.conf

    3. 配置sersync服务
    cp /usr/local/sersync/etc/confxml.xml /usr/local/sersync/etc/zgxcw_im_server.xml
    vim /usr/local/sersync/etc/zgxcw_im_server.xml  

    #修改如下红色部分,其余保持默认即可
    -------------------------------------------------------------
    <sersync>

            #监视的本地目录

            <localpath watch="/data/web/zgxcw_im_server">    

                 #客户端地址和项目名称

                <remote ip="192.168.30.27" name="zgxcw_im_server"/>  

                <remote ip="192.168.30.28" name="zgxcw_im_server"/>

            </localpath>

            <rsync>

                <commonParams params="-artuz"/>

                #开启认证和指定密码文件位置

                <auth start="true" users="zgxcw" passwordfile="/usr/local/rsync/etc/zgxcw_im_server.pass"/>  

                <userDefinedPort start="false" port="874"/><!-- port=874 -->

                <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="false" schedule="600"><!--600mins-->

                <crontabfilter start="false">

                    <exclude expression="*.php"></exclude>

                    <exclude expression="info/*"></exclude>

                </crontabfilter>

            </crontab>

            <plugin start="false" name="command"/>

        </sersync>


    -------------------------------------------------------------
    测试rsync是否能正常工作: 
    /usr/local/rsync/bin/rsync -avzP --password-file=/usr/local/rsync/etc/zgxcw_im_server.pass /data/web/zgxcw_im_server  zgxcw@192.168.30.28::zgxcw_im_server

    启动sersync服务:
    /usr/local/sersync/bin/sersync2 -r -d -o /usr/local/sersync/zgxcw_im_server.xml
    展开全文
  • sersync2.5.4 软件

    2019-04-22 21:04:22
    sersync是基于inotify开发的,类似于inotify-tools的工具,可以实现实时数据同步
  • sersync-master.zip

    2020-06-11 09:48:54
    sersync实现实时同步的软件,结合rsync和inotify使用sersync的压缩包,下载后可以直接传到虚拟机中使用
  • sersync配置

    2019-09-13 17:07:43
    源服务器(01号服务器) 1.程序目录/usr/local/sersync 2./usr/local/sersync/confxml.xml文件内容 <?xml version="1.0" encoding="ISO-8859-1"?> <head version="2.5"...
  • sersync2.5.4.tar.gz

    2020-08-13 14:22:13
    sersync +rsync实现数据实时同步 主机A 装sersync (数据源,源机器)192.168.0.63 主机B装rsync (备份端,目标机器)192.168.0.64 实验结果:主机A进行新增,修改,删除文件的操作,文件或目录发生了变化,主机...
  • sersync部署

    2017-07-19 15:11:00
    rsync : wget ... Sersync: wgethttps://raw.githubusercontent.com/wsgzao/sersync/master/sersync2.5.4_64bit_binary_stable_final.tar.gz Sersync安装:...
  • 这个工程是原sersync项目在的副本,在此基础上进行源码分析与注释,可能会进行二次开发,仅做学习之用。 参考文章 编译步骤 CentOS7下编译成功。 首先下载boost库,解压,得到boost_1_64_0 。 将其根目录下的boost子...
  • Linux sersync

    2017-11-15 18:52:00
    1、sersync是基于Inotify开发的,类似于Inotify-tools的工具 2、sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的这...
  • 1.1 第一个里程碑:安装sersync软件 1.1.1 将软件上传到服务器当中并解压 1、上传软件到服务器上 rz -E 为了便于管理上传位置统一设置为 /server/tools 中 2、解压软件包 [root@backup sersync_installdir_64bit]#...
  • sersync2.5.4_64bit

    2019-01-20 10:46:03
    sersync是基于Inotify开发的,类似于Inotify-tools的工具
  • sersync同步文件

    2019-01-09 14:15:45
    一、为什么要用rsync+sersync架构? 1、sersync是基于Inotify开发的,类似于Inotify-tools的工具 2、sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字,然后使用...
  • zabbix监控sersync

    2017-10-05 21:52:59
    1.vim /usr/local/sersync/check_sersync.sh #!/bin/sh sersync="/usr/local/sersync/sersync2" confxml="/usr/local/sersync/confxml.xml" status=$(ps aux |grep 'sersync2'|grep -v 'grep'|...
  • sersync实时同步操作

    2019-01-18 09:51:19
    此文档为sersync实时同步,操作步骤,在两台linux系统下进行
  • linux 配置 Sersync

    2019-10-05 15:49:27
    [root@SERSYNC sersync]# cp conf/confxml.xml conf/confxml.xml.bak.$(date +%F) [root@SERSYNC sersync]# ls bin conf logs [root@SERSYNC sersync]# ls conf/ confxml.xml ...
  • 实时同步sersync

    2019-10-06 09:51:58
    1.1 sersync+rsync实现实时同步过程 第一个历程:安装sersync软件 将软件进行下载,上传到系统/server/tools目录中 下载软件地址:https://github.com/wsgzao/sersync unzip sersync_installdir_64bit.zip ...
  • 主要为大家详细介绍了Linux下sersync数据实时同步的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,232
精华内容 1,292
关键字:

sersync