首页 > 代码库 > linux同步服务器rsync+sersync的配置

linux同步服务器rsync+sersync的配置

同步的服务器端配置

mkdri /data/filedir
chown -R  rsync:rsync /data/filedir  

yum install rsync -y

创建配置文件
[root@node1 filedir]# vim /etc/rsyncd.conf 
##rsync.conf config start
uid = rsync
gid = rsync
use chroot = no
max connetctions = 200
timeout = 100

pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log

[backup]
path = /data/filedir
ignore errors
read only = false
list = false
hosts allow = 192.168.193.129
auth users = rsync_backup
secrets file = /etc/rsync.password
##rsync config  end   


创建密码文件:
echo "rsync_backup:123456">/etc/rsync.password
chmod 600 /etc/rsync.password


启动服务:
rsync --daemon

查看:
[root@node1 filedir]# netstat -ntulp  | grep rsync
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      1631/rsync          
tcp        0      0 :::873                      :::*                        LISTEN      1631/rsync

设置开机自启rsync服务:
vim /etc/rc.local
添加
# rsync server progress
/usr/bin/rsync --daemon


同步客户端配置:

配置密码文件:
echo "123456">/etc/rsync.password
chmod 600 /etc/rsync.password

手工测试数据推送:
[root@node2 ~]# rsync -avzP /etc/hosts rsync_backup@192.168.193.128::backup --password-file=/etc/rsync.password
sending incremental file list

sent 26 bytes  received 8 bytes  22.67 bytes/sec
total size is 180  speedup is 5.29


在同步服务器端进行查看:
[root@node1 filedir]# pwd
/data/filedir
[root@node1 filedir]# cat hosts 
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.193.129 node2

客户端的/etc/hosts文件已经同步至备份的服务器中。


在同步的客户端部署sersync服务

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

mkdir -p conf bin logs
mv confxml.xml conf/
mv sersync2 bin/sersync
echo ‘export PATH=$PATH:/usr/local/sersync/bin‘>>/etc/profile 
source /etc/profile


cd conf/
cp -a confxml.xml{,.`date +%F`}    #复制配置文件

软件目录结构如下:
[root@node2 sersync]# tree 
.
├── bin
│   └── sersync
├── conf
│   ├── confxml.xml
│   └── confxml.xml.2017-06-19
└── logs
    └── rsync_fail_log.sh
    
    
 #修改配置文件
 #第一部分:设置本地监控的同步目录、远端服务器、备份模块(备份模块在远端服务器/etc/rsyncd.conf定义)
 <localpath watch="/data/tongbu">
            <remote ip="192.168.193.128" name="backup"/>
             #<!--<remote ip="192.168.8.39" name="tongbu"/>-->
             #<!--<remote ip="192.168.8.40" name="tongbu"/>-->
 </localpath>

 #第二部分:设置认证部分、服务器端的认证用户与密码文件存放位置(在远端服务器/etc/rsyncd.conf定义)
 <rsync>
            <commonParams params="-artuz"/>
            <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>
            <userDefinedPort start="false" port="874"/><!-- port=874 -->
            <timeout start="true" time="100"/><!-- timeout=100 -->
            <ssh start="false"/>
        </rsync>

类似于 rsync -avzP /etc/hosts  rsync_backup@192.168.193.128::backup --password-file=/etc/rsync.password

#第三部分:设置同步失败日志存放位置,当同步失败时记录下来,并且每60分钟对失败的log进行重新同步
<failLog path="/usr/local/sersync/logs/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute 
once-->


修改完成后,完整的配置文件如下:

[root@node2 conf]# more 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="false"/>
    <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="false"/>
        <closeWrite start="true"/>
        <moveFrom start="true"/>
        <moveTo start="true"/>
        <attrib start="false"/>
        <modify start="false"/>
    </inotify>

    <sersync>
        <localpath watch="/data/tongbu">
            <remote ip="192.168.193.128" name="backup"/>
            <!--<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="rsync_backup" passwordfile="/etc/rsync.password"/>
            <userDefinedPort start="false" port="874"/><!-- port=874 -->
            <timeout start="true" time="100"/><!-- timeout=100 -->
            <ssh start="false"/>
        </rsync>
        <failLog path="/usr/local/sersync/logs/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>


客户端启动sersync服务:

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


客户端进行验证:

cd /data/tongbu/
for i in `seq 100`;do mkdir $i;done
[root@node2 tongbu]# ls
1    12  16  2   23  27  30  34  38  41  45  49  52  56  6   63  67  70  74  78  81  85  89  92  96
10   13  17  20  24  28  31  35  39  42  46  5   53  57  60  64  68  71  75  79  82  86  9   93  97
100  14  18  21  25  29  32  36  4   43  47  50  54  58  61  65  69  72  76  8   83  87  90  94  98
11   15  19  22  26  3   33  37  40  44  48  51  55  59  62  66  7   73  77  80  84  88  91  95  99

在同步的服务器上进行查看:

[root@node1 filedir]# cd /data/filedir
[root@node1 filedir]# ls
1    12  16  2   23  27  30  34  38  41  45  49  52  56  6   63  67  70  74  78  81  85  89  92  96  hosts
10   13  17  20  24  28  31  35  39  42  46  5   53  57  60  64  68  71  75  79  82  86  9   93  97
100  14  18  21  25  29  32  36  4   43  47  50  54  58  61  65  69  72  76  8   83  87  90  94  98
11   15  19  22  26  3   33  37  40  44  48  51  55  59  62  66  7   73  77  80  84  88  91  95  99
验证成功!!!


命令参数说明

Sersync参数说明
./sersync -r

-r参数作用是:开启实时监控的之前对主服务器目录与远程目标机器的目录进行一次整体同步;如果需要将sersync运行前,主服务器目录下已经存在的所有文件或目录全部同步到远端,则要以 -r参数运行sersync,将本地与远程整体同步一次;

提别说明:如果设置了过滤器,即在xml文件中,filter为true,则暂时不能使用-r参数进行整体同步;
./sersync -o xx.xml

不指定 -o参数: sersync使用sersync可执行文件目录下的默认配置文件confxml.xml

指定 -o 参数:可以指定多个不同的配置文件,从而实现sersync多进程多实例的数据同步
./sersync -n num

-n参数为:指定默认的线程池的线程总数;

例如: ./sersync -n 5 则指定线程总数为5,如果不指定,默认启动线程池数量是10,如果cpu使用过高,可以通过该参数调低,如果机器配置较高,可以调高默认的线程总数,提升同步效率;
./sersync -d-d参数为:后台服务,通常情况下使用 -r参数对本地到远端整体同步一遍后,在后台运行此参数启动守护进程实时同步;在第一次整体同步时,-d 和 -r参数经常会联合使用;

./sersync -m

pluginName

-m参数:不进行同步,只运行插件 ./sersync -m pluginName

例如:./sersync -m command,则在监控到事件后,不对远程目标服务器进行同步,而是直接运行command插件
组合命令使用说明:
-n 8 -o liubl.xml -r -d多个参数可以配合使用,例如:./sersync -n 16 -o config.xml -r -d 表示设置线程池工作线程为16个,指定liubl.xml作为配置文件,在实时监控前 做一次整体同步,以守护进程方式在后台运行;
./sersync --help很遗憾,它没有查看帮助(需要的话2条路,要么看源代码,要么自测求验证)



sersync服务配置文件参数详解:

1.xml配置文件的注释不用“#”,而是<!-- 中间是注释内容 -->

2.Debug开启开关:<debug start="false"/> 
    设置为true,表示开启debug模式,会在sersync正在运行的控制台打印inotify时间与rsync同步命令;

3.XFS文件系统开关:<fileSystem xfs="false"/>
    对于xfs文件系统的用户,需要将这个选项开启,才能使用sersync正常工作;

4.filter文件过滤功能
    <filter start="false">
             <exclude expression="(.*)\.svn"></exclude>
             <exclude expression="(.*)\.gz"></exclude>
             <exclude expression="^info/*"></exclude>
            <exclude expression="^static/*"></exclude>
     </filter>
    排除一些文件,不需要
     
5.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>
对于大多数应用,可以尝试把createFile(监控文件事件选项)设置为false来提高性能,减少rsync通讯;
因为拷贝文件到监控目录会产生create事件与close_write事件,所以如果关闭create事件,只监控文件拷贝结束时的时间close_write,同样可以实现文件完整同步;
注意:强将creatFolder保持为true,如果将createFolder设为false,则不会对产生的目录进行监控,该目录下的子文件与子目录也不会被监控;所以除非特殊需要,请开启; 默认情况下对创建文件(目录)事件与删除文件(目录)事件都进行监控,如果项目中不需要删除远程目标服务器的文件(目录),则可以将delete参数设置为false,则不对删除事件进行监控;



本文出自 “hello world” 博客,请务必保留此出处http://nxyboy.blog.51cto.com/10511646/1940413

linux同步服务器rsync+sersync的配置