zoukankan      html  css  js  c++  java
  • 二进制sersync部署安装

    概述

    sersync是基于inotify开发的,类似于inotify-tools的工具

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

    rsync+inotify-tools与rsync+sersync架构的区别?

    1.rsync+inotify-tools

    • inotify只能记录下被监听的目录发生了变化(增,删,改)并没有把具体是哪个文件或者哪个目录发生了变化记录下来;
    • rsync在同步的时候,并不知道具体是哪个文件或目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此效率很低

        

    2.rsync+sersync

    • sersync可以记录被监听目录中发生变化的(增,删,改)具体某个文件或目录的名字;
    • rsync在同步时,只同步发生变化的文件或目录(每次发生变化的数据相对整个同步目录数据来说很小,rsync在遍历查找对比文件时,速度很快),因此效率很高。

    总结: 

                当同步的目录数据量不大时,建议使用rsync+inotify 

                当同步的目录数据量很大时(几百G甚至1T以上)文件很多时,建议使用rsync+sersync

    安装sersync

      sersync 下载地址,验证码【 eh2b 】

    安装步骤

    [root@nfs01 ~]# unzip sersync_installdir_64bit.zip 
    
    [root@nfs01 ~]# ls
    anaconda-ks.cfg  sersync_installdir_64bit  sersync_installdir_64bit.zip
    
    [root@nfs01 ~]# mv sersync_installdir_64bit/sersync/ /usr/local/sersync

    配置文件修改

    [root@nfs01 sersync]# ls
    bin  conf  logs
    
    [root@nfs01 sersync]# vim conf/confxml.xml 
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <head version="2.5">
        <host hostip="localhost" port="8008"></host>
        #开启调试模式
        <debug start="true"/>  
        <fileSystem xfs="false"/>
        #指定排除数据信息, 不进行实时同步
        <filter start="false">
            <exclude expression="(.*).svn"></exclude>
            <exclude expression="(.*).gz"></exclude>
            <exclude expression="^info/*"></exclude>
            <exclude expression="^static/*"></exclude>
        </filter>
        <inotify>
             # 指定inotify程序监控事件信息
            <delete start="true"/>
            <createFolder start="true"/>
            <createFile start="false"/>
            <closeWrite start="true"/>
            <moveFrom start="true"/>
            <moveTo start="true"/>
            <attrib start="false"/>
            <modify start="false"/>
        </inotify>
    
        <sersync>
            <localpath watch="/opt/tongbu">    #备份文件位置
                <remote ip="127.0.0.1" name="tongbu1"/>    #IP地址,模块名称
                <!--<remote ip="192.168.8.39" name="tongbu"/>-->
                <!--<remote ip="192.168.8.40" name="tongbu"/>-->
            </localpath>
            <rsync>
                <commonParams params="-artuz"/>  #rsync选项
                <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>   #auth users 位置 | 密码文件位置
                <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>
    
        <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>
               
        

    启动服务程序

    [root@nfs01 sersync]# chmod +x /usr/local/sersync/bin/sersync 添加执行权限
    
    [root@nfs01 sersync]# vim /etc/profile   
    export PATH="$PATH:/usr/local/sersync/bin/"   #/etc/profile 最下面添加全局环境变量
     
    [root@nfs01 sersync]# sersync -dro /usr/local/sersync/conf/confxml.xml 

    命令执行结果

    root@web01 ~]# sersync -dro /usr/local/sersync/conf/confxml.xml 
    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
    option: -d     run as a daemon
    option: -r     rsync all the local files to the remote servers before the sersync work
    option: -o     config xml name:  /usr/local/sersync/conf/confxml.xml
    daemon thread num: 10
    parse xml config file
    host ip : localhost    host port: 8008
    daemon start,sersync run behind the console 
    use rsync password-file :
    user is    rsync_backup
    passwordfile is     /etc/rsync.password
    config xml parse success
    please set /etc/rsyncd.conf max connections=0 Manually
    sersync working thread 12  = 1(primary thread) + 1(fail retry thread) + 10(daemon sub threads) 
    Max threads numbers is: 22 = 12(Thread pool nums) + 10(Sub threads)
    please according your cpu ,use -n param to adjust the cpu rate
    ------------------------------------------
    rsync the directory recursivly to the remote servers once
    working please wait...
    execute command: cd /backup && rsync -az -R --delete ./ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password >/dev/null 2>&1 
    run the sersync: 
    watch path is: /backup
  • 相关阅读:
    day_5.25py
    day_5.24py
    day_5.22 py
    numpy模块 03
    requests 模块例题示范
    logging模块
    typing 模块
    hashlib模块和hmac模块
    random模块
    time和datetime模块
  • 原文地址:https://www.cnblogs.com/Mercury-linux/p/11754096.html
Copyright © 2011-2022 走看看