说明:该功能服务端安装sersync2,客户端安装rsync,原理就是服务端主动推送设定目录下的所有更新的文件到各个客户端rsync接收。

rsync大家都知道,是Linux自带的数据同步工具,而sersync2是google大神的开源项目http://code.google.com/p/sersync/

下面给出具体的实现步骤,实现的详细原理大家可以去上面的开源网址,上面说的很详细

  1. 客户端配置,首先系统安装rsync工具,

    [root@yo57 ~]# vi /etc/rsyncd.conf
    
    uid=www
    gid=www
    max connections=36000
    use chroot=no
    log file=/var/log/rsyncd.log
    pid file=/var/run/rsyncd.pid
    lock file=/var/run/rsyncd.lock [yowebtongbu]
    path=/Data/code/adserver
    comment = yo web files
    ignore errors = yes
    read only = no
    hosts allow = 192.168.0.0/24
    hosts deny = *
    [root@yo57 ~]# /usr/bin/rsync --daemon --config=/etc/rsyncd.conf
    [root@yo57 ~]# ps -ef|grep rsyn
    root 1070 29923 0 17:04 pts/4 00:00:00 grep rsyn
    root 32069 1 0 16:54 ? 00:00:00 /usr/bin/rsync --daemon --config=/etc/rsyncd.conf
  2. 写入开机启动项
    [root@yo57 ~]# vi /etc/rc.local
    
    #!/bin/sh
    #
    # This script will be executed *after* all the other init scripts.
    # You can put your own initialization stuff in here if you don't
    # want to do the full Sys V style init stuff. touch /var/lock/subsys/local ulimit -SHn 51200
    /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
    /usr/local/nginx/sbin/nginx
    /etc/init.d/php_fpm start
    /usr/bin/rsync --daemon --config=/etc/rsyncd.conf
  3. 服务器端
    [root@10 
    local
    ]
    # tar -zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz
    [root@10 
    local
    ]
    # cd sersync2.5.4_64
    [root@10 sersync2.5.4_64]
    # ls
    confxml.xml  sersync2
    [root@10 sersync2.5.4_64]
    # vi confxml.xml

    修改这一段即可

    <localpath 
    watch
    =
    "/Data/code/adserver"
    >
          
    <remote ip=
    "192.168.0.27" 
    name=
    "yowebtongbu"
    />
          
    <!--<remote ip=
    "192.168.8.39" 
    name=
    "tongbu"
    />-->
          
    <!--<remote ip=
    "192.168.8.40" 
    name=
    "tongbu"
    />-->
      
    <
    /localpath
    >

    进行一次完整同步
    [root@10 sersync2.5.4_64]# ./sersync2 -r
    写入脚本并放入开机启动项

    [root@10 sersync2.5.4_64]
    # cat /usr/local/sbin/sersync.sh    
    #!/bin/bash
    PATH=
    /bin
    :
    /sbin
    :
    /usr/bin
    :
    /usr/sbin
    :
    /usr/local/bin
    :
    /usr/local/sbin
    :~
    /bin
    export 
    PATH
       
    SDATH=
    "/usr/local/sersync2.5.4_64"
    SSTART=
    "./sersync2 -r -d"
    SPID=`
    ps 
    -ef|
    grep 
    'sersync2'
    |
    grep 
    -
    v 
    'grep'
    |
    awk 
    '{print $2}'
    `
       
    function_start()
    {
        
    echo 
    -en 
    "\033[32;49;1mStarting sersync2......\n"
        
    echo 
    -en 
    "\033[39;49;0m"
        
    if 
    [ -t ${SPID} ]; 
    then
            
    cd 
    ${SDATH}
            
    ${SSTART} > 
    /dev/null 
    2>&1
            
    printf 
    "Serync2 is the successful start!\n"
        
    else
        
    printf 
    "Sersync2 is runing!\n"
        
    exit 
    1
        
    fi
    }
       
    function_stop()
    {
        
    echo 
    -en 
    "\033[32;49;1mStoping sersync2......\n"
        
    echo 
    -en 
    "\033[39;49;0m"
        
    if  
    [ -t ${SPID} ]; 
    then
            
    printf  
    "Sersync2 program is not runing!\n"
        
    else
            
    kill 
    ${SPID}
            
    printf 
    "Sersync2 program is stoped\n"
        
    fi
    }
       
    function_restart()
    {
        
    echo 
    -en 
    "\033[32;49;1mRestart sersync2......\n"
        
    echo 
    -en 
    "\033[39;49;0m"
        
    if  
    [ -t ${SPID} ]; 
    then
            
    cd 
    ${SDATH}
            
    ${SSTART} > 
    /dev/null 
    2>&1
        
    else
            
    kill 
    ${SPID}
            
    sleep 
    1
            
    cd 
    ${SDATH}
            
    ${SSTART} > 
    /dev/null 
    2>&1
        
    fi
        
    printf 
    "Sersync2 is the successful restart!\n"
    }
       
    function_kill()
    {
        
    killall sersync2
    }
       
    function_status()
    {
        
    if 
    ! 
    ps 
    -ef|
    grep 
    'sersync2'
    |
    grep 
    -
    v 
    'grep' 
    > 
    /dev/null 
    2>&1
        
    then
            
    printf 
    "Sersync2 is down!!!\n"
        
    else
            
    printf 
    "Sersync2 is running now!\n"
        
    fi
    }
       
    if 
    [ 
    "$1" 
    = 
    "start" 
    ]; 
    then
        
    function_start
    elif 
    [ 
    "$1" 
    = 
    "stop" 
    ]; 
    then
        
    function_stop
    elif 
    [ 
    "$1" 
    = 
    "restart" 
    ]; 
    then
        
    function_restart
    elif 
    [ 
    "$1" 
    = 
    "kill" 
    ]; 
    then
        
    function_kill
    elif 
    [ 
    "$1" 
    = 
    "status" 
    ]; 
    then
        
    function_status
    else
        
    echo 
    -en 
    "\033[32;49;1m Usage: sersync2 {start|stop|restart|kill|status}\n"
        
    echo 
    -en 
    "\033[39;49;0m"
    fi


    [root@10 sersync2.5.4_64]
    # vi /etc/rc.local
        
    #!/bin/sh
    #
    # This script will be executed *after* all the other init scripts.
    # You can put your own initialization stuff in here if you don't
    # want to do the full Sys V style init stuff.
        
    touch 
    /var/lock/subsys/local
    #/etc/init.d/lemp start
    /usr/local/nginx/sbin/nginx
    /etc/init
    .d
    /php_fpm 
    start
    /usr/local/zabbix/sbin/zabbix_agentd
    /usr/local/sbin/sersync
    .sh start

整个实现就这么简单,以后主服务器上面/Data/code/adserver目录下有新建、删除、修改文件或文件夹(包括下层递归)的的数据会自动推送到下面的各个服务端对应目录下,如果临时不需要该功能,kill掉服务端即可,操作完以后在手动开启服务端(此时客户端不用动)

Linux文件实时同步,可实现一对多的更多相关文章

  1. linux文件实时同步

    参考博客:https://www.cnblogs.com/MacoLee/p/5633650.html 一.文件同步很简单 服务端:被动的接收传输过来的数据 客户端:主动提供数据给服务端 安装思路:服 ...

  2. linux下两台服务器文件实时同步方案设计和实现

    inux下两台服务器文件实时同步方案设计和实现 假设有如下需求: 假设两个服务器: 192.168.0.1 源服务器  有目录 /opt/test/ 192.168.0.2 目标服务器  有目录 /o ...

  3. Linux服务器间文件实时同步的实现

    使用场景 现有服务器A和服务器B,如果服务器A的指定目录(例如 /home/paul/rsync/ )中的内容发生变更(增删改和属性变更),实时将这些变更同步到服务器B的目标目录中(例如 /home/ ...

  4. (转)Linux下通过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步

    Linux下通过rsync与inotify(异步文件系统事件监控机制)实现文件实时同步原文:http://www.summerspacestation.com/linux%E4%B8%8B%E9%80 ...

  5. rsync+inotify 实现服务器之间目录文件实时同步(转)

    软件简介: 1.rsync 与传统的 cp. tar 备份方式相比,rsync 具有安全性高.备份迅速.支持增量备份等优点,通过 rsync 可 以解决对实时性要求不高的数据备份需求,例如定期的备份文 ...

  6. rsync+inotify-tools文件实时同步

    rsync+inotify-tools文件实时同步案例 全量备份 Linux下Rsync+sersync实现数据实时同步完成. 增量备份 纯粹的使用rsync做单向同步时,rsync的守护进程是运行在 ...

  7. inotify用法简介及结合rsync实现主机间的文件实时同步

    一.inotify简介 inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统(API),它提供了一种监控文件系统(基于inode的)事件的机制,可以监控文件系 ...

  8. eclipse 远程文件实时同步,eclipse远程部署插件

    [转自] http://zhwj184.iteye.com/blog/1842730 eclipse 远程文件实时同步,eclipse远程部署插件 github地址:https://github.co ...

  9. Centos 6.5 rsync+inotify 两台服务器文件实时同步

    rsync和inotify是什么我这里就不在介绍了,有专门的文章介绍这两个工具. 1.两台服务器IP地址分别为: 源服务器:192.168.1.2 目标服务器:192.168.1.3 @todo:从源 ...

随机推荐

  1. Ionic Js十九:加载动画

    ion-spinner ionSpinner 提供了许多种旋转加载的动画图标.当你的界面加载时,你就可以呈现给用户相应的加载图标. 该图标采用的是SVG.  实例 HTML 代码 <ion-c ...

  2. Object-c和Java中的代理

    代理模式的核心思想就是一个类想做一件事情(函数),但它不去亲自做(实现),而是通过委托别的类(代理类)来完成. 代理模式的优点: 1.可以实现传值,尤其是当一个对象无法直接获取到另一个对象的指针,又希 ...

  3. 【知了堂学习笔记】java 接口与抽象类

    本次主角:抽象类 .接口. 对于皮皮潇这样一类的Java初学者来说,接口和抽象类如果不去花大量的精力与时间是很难弄清楚的,而我也是在最近这周的项目学习中感觉到了我对这两个概念不熟悉,所以导致对一些问题 ...

  4. 学习 HMM

    简介 HMM 中的变量可以分为两组. 第一组是状态变量 \(\{y_i,y_2,\cdots, y_n\}\), 其中 \(y_i \in \mathcal{Y}\) 表示第 \(i\) 时刻的系统状 ...

  5. 深度学习---手写字体识别程序分析(python)

    我想大部分程序员的第一个程序应该都是“hello world”,在深度学习领域,这个“hello world”程序就是手写字体识别程序. 这次我们详细的分析下手写字体识别程序,从而可以对深度学习建立一 ...

  6. django导出excel

    # coding:utf-8 from django.http import HttpResponse from xlwt import * import StringIO, os from test ...

  7. Spring的模块组成

    Spring的模块组成 1.核心容器:核心容器提供 Spring 框架的基本功能(Spring Core).核心容器的主要组件是 BeanFactory,它是工厂模式的实现. BeanFactory ...

  8. [BZOJ4569][SCOI2016]萌萌哒(倍增+并查集)

    首先有一个显然的$O(n^2)$暴力做法,将每个位置看成点,然后将所有限制相等的数之间用并查集合并,最后答案就是9*(10^连通块的个数).(特判n=1时就是10). 然后比较容易想到的是,由于每次合 ...

  9. [CF183D]T-shirt

    [CF183D]T-shirt 题目大意: 有\(n(n\le3000)\)个人和\(m(m\le300)\)种T恤,每个人都有一种喜欢的T恤,你知道每个人喜欢每种T恤的概率\(p_{i,j}\). ...

  10. [BalticOI2002]Bicriterial routing

    OJ题号: BZOJ1375.ECNU1468 题目大意: 给定一个无向连通图,每条边有两个权值w1和w2.定义一条路径是优秀的当且仅当没有别的路径满足两个权值的和都比该路径小,求s到t的优秀路径条数 ...