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

同步的服务器端配置

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

yum install rsync -y

创建配置文件
[[email protected] 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

查看:
[[email protected] 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

手工测试数据推送:
[[email protected] ~]# rsync -avzP /etc/hosts [email protected]::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

在同步服务器端进行查看:
[[email protected] filedir]# pwd
/data/filedir
[[email protected] 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`}    #复制配置文件

软件目录结构如下:
[[email protected] 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  [email protected]::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-->

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

[[email protected] 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
[[email protected] 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

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

[[email protected] filedir]# cd /data/filedir
[[email protected] 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,则不对删除事件进行监控;

时间: 2024-10-10 16:38:58

linux同步服务器rsync+sersync的配置的相关文章

企业实时同步方案----Rsync+Sersync

在博文企业实时同步方案----Sersync介绍中我们详细介绍了Sersync的原理,设计架构以及和 Inotify 等等的优势区别.这里我就带大家一起来做一下 Rsync +Sersync 这个同步分发架构案例. 实验环境介绍: 内核版本:2.6.32-431.el6.x86_64 系统采用最小化安装,系统经过了基本优化,selinux为关闭状态,iptables为无限制模式 源码包存放位置:/root Rsync客户端+Sersync服务器(SERSYNC),承担角色MASTER,IP:17

Linux NFS服务器的安装与配置(转载)

一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法. NFS 的基本原则是"容许不同的客户端及服务端通过一组RPC分享相同的文件系统",它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享. NF

linux同步工具rsync?

linux同步工具rsync 一.rsync命令 rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.rsync使用所谓的"rsync算法"来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快. rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明. 语法: rsync [OPTION]... SRC DEST rsync [OPTION]...

Linux FTP服务器的搭建与配置+基于关系型数据库实现用户认证

一.服务器端的安装: yum install vsftpd 1)查看安装后生成的哪些文件 [[email protected] ~]# rpm -ql vsftpd /etc/logrotate.d/vsftpd  <==========主志日志文件 /etc/pam.d/vsftpd<==================认证文件 /etc/rc.d/init.d/vsftpd<=============服务脚本 /etc/vsftpd<======================

linux后台服务器开发环境部署配置和验证(nginx+apache+php-fpm+FASTCGI(C/C++))

linux后台服务器开发环境部署配置 引言 背景 随着公司互联网业务的不断增多,开发环境变得越来越复杂,为了便于统一服务器端的开发部署环境,特制定本配置文档. 使用软件 CentOS 6.3(Linux version 2.6.32-279.el6.x86_64) gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4) 本次配置 Nginx 1.5.8 Apache 2.4.7 php 5.3.26 目的 构造WEB前端技术架构,web前端的部署结构技术完全完成.

线上服务器应用--文件同步方案Rsync+sersync

前言: 需求:3台服务器,其中1主2备,实现主服务器实时推送文件至2台备份服务器 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增加.删除.修改)具体某一个文件或某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的这个文件或者这个目录. 二.Rsync+Inotify-tools与Rsync+sersync这两种架构有什么区别? 1.Rsyn

Linux同步镜像备份Rsync

我一哥们最近在搞备份,需要用到rsync.因此,鄙人就简单总结了下rsync,也就有了这篇博文,希望对51的博友们有所帮助! RSYNC简介: Rsync (remote sync)是一款开源.快速,多功能.可实现增量的本地或远程数据镜像同步备份优秀工具.它可通过 LAN/WAN 快速同步多台主机间的文件.Rsync 本来是用以取代rcp 的一个工具,它当前由 Rsync.samba.org 维护.Rsync 使用所谓的"Rsync演算法"来使本地和远程主机之间的文件达到同步,该算法只

【转载】Linux NFS服务器的安装与配置

一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法. NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享. NFS在文件传

linux下一个rsync工具和配置

本文介绍了整个基本:http://www.2cto.com/os/201308/238733.html 一些简单的备忘录: 1. ubuntu下通过apt-get就可以安装: 2. 配置文件/etc/rsync.conf默认不存在,须要手动创建: 3. 能够通过守护进程xinetd来启动rsync,在/etc/default/rsync中配置: 4. server在/etc/rsync.passwd中配置登录名和password,不一定非得这个文件,能够在/etc/rsync.conf中配置每个