• lsyncd+rsync实现实时自动同步


    本文来自己网络

    本示例所需要的软件是:lsyncd与rsync

    一般rsync软件是通过crond这支后台进行(计划任务)来实现自动同步数据,如今已有更好的开源软件来代替使用crond了,那就是lsyncd( Live Syncing (Mirror) Daemon),它的工作原理:监视本地(rsync client)的目录,当源数据有文件或目录更新时,更新本地文件或目录到远端机器(rsync server),保持实时文件同步,但是它更新数据时需要远端rsync server运行rsync demon

    一、配置环境

    系统版本CentOS 6.5

    客户端(目标):rsync(接收同步资源服务器)

    服务端(源):lsyncd(发送资源服务器)

    clip_image001

    二、客户端安装

    1. 安装rsync

    1.1.1.yum install rsync

    默认情况下rsync已安装检查安装

    rpm qa|grep rsync

    如果没有,运行以下命令安装:

    #yum install rsync

    1.1.2.检查rsync 运行状态

    chkconfig --list rsync

    rsync off (默认为开启)

    1.1.3.在xinetd配置中打开rsync服务

    [root@node2 ~]# vi /etc/xinetd.d/rsync

    disable = no ## 默认yes 改成 no

    1.1.4.再次检查rsync状态

    chkconfig --list rsync

    rsync on(已开启服务)

    1.1.5. 确认xinetd服务开启

    [root@node2 ~]# chkconfig --level 345 xinetd on

    启动xinetd
    [root@node2 ~]# service xinetd start
    Starting xinetd: [ OK ]

    2、配置rsyncd

    2.1.编辑配置文件

    root@node2 ~]#mkdir /data/logs/sync/ -p

    root@node2 ~]# vi /etc/rsyncd.conf

    log file = /data/logs/sync/rsyncd.log

    pid file = /data/logs/sync/rsyncd.pid

    lock file = /var/run/rsync.lock

    use chroot = yes

    [www]

    path = /data/www

    hosts allow = 192.168.0.211 (服务端ip)

    uid = www

    gid = www

    read only = false

    2.2.重启服务

    service xinetd restart

    2.3确认873端口监听

    [root@node2 ~]# netstat -anp | grep 873
    tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 3169/xinetd

    2.4建立资源同步目录

    mkdir /data/www –p

    chown www:www /data/www

    三、服务器端安装

    1、安装lsyncd:

    1.1.安装lsyncd

    需要lua支持。

    安装服务:lsyncd(注意:阿里云yum源epel有该服务,没有的话需要安装(yum -y install epel-release)

    yum install lua lsyncd

    1.2建立配置文件lsyncd.conf

    [root@node1~]#mkdir /data/logs/sync/ -p

    [root@node1~]# vi /etc/lsyncd.conf
    settings {

    logfile = "/data/logs/sync/lsyncd.log",

    statusFile = "/data/logs/sync/lsyncd.stat",

    statusInterval =1,

    }

    sync{

    default.rsync,

    source="/data/www/",

    target="192.168.0.212::www",

    exclude = { ".*", "*.log" },

    excludeFrom="/etc/rsync_exclude.lst",

    init=false,

    rsync = {

    binary = "/usr/bin/rsync",

    archive = true,

    compress = true,

    verbose = true

    }

    }

    说明:

    /data/www/ #要实时同步的目录
    192.168.0.212 #要实时同步到的远端机器即接收服务器地址。
    www #对应server端192.168.0.211的rsync的tag

    exclude = { ".*", "*.log" } #排除不需要同步的文件
    excludeFrom="/etc/rsync_exclude.lst",#设置排除不需要同步的文件的列表,可以不需要同步的文件,文件夹写在rsync_exclude.lst中,文件夹目录相对于:/data/www

    如果要同步多台就在这个文件中每同步一台加一项如下:

    sync{

    default.rsync,

    source="/data/www/",

    target="192.168.0.212::www",

    init=galse,

    rsyncOps={"-avz","--delete"}

    }

    sync{

    default.rsync,

    source="/www/html/",

    target="192.168.0.213::www",

    init=galse,

    rsyncOps={"-avz","--delete"}

    }

    1.3设置不需要同步的文件或文件夹

    # vim /etc/rsync_exclude.lst

    conf

    app/log

    1.4建立资源同步目录

    mkdir /data/www -p

    1.5配置max_user_watches

    echo 65535000 > /proc/sys/fs/inotify/max_user_watches

    echo fs.inotify.max_user_watches=65535000 >> /etc/sysctl.conf

    1.6启动lsyncd
    [root@node1~]# /etc/init.d/lsyncd start 或service lsyncd start

    确认lsyncd是否启动

    [root@node1~]# /etc/rc.d/init.d/lsyncd status 或service lsyncd status

    lsyncd (pid 21125) is running...

    把lsyncd加入到随机器启动当中

    [root@node1~]# chkconfig lsyncd on

    2.同步测试

    在服务器端(192.168.0.211)上的目录/data/wwwx下新建文件test-server

    [root@node1 www]#cd /data/www

    [root@node1 www]# touch test-server

    [root@node1 www]# ll

    total 0

    -rw-r--r-- 1 root root 0 Jan 23 14:52 test-server

    [root@node1 www]#

    查看日志,观察同步过程

    [root@node1 www]# tail -f /data/logs/sync/lsyncd.log

    Sat Jan 23 14:56:13 2016 Normal: Calling rsync with filter-list of new/modified files/dirs

    /test-server

    /

    sending incremental file list

    ./

    test-server

    sent 130 bytes received 30 bytes 13.91 bytes/sec

    total size is 0 speedup is 0.00

    Sat Jan 23 14:56:24 2016 Normal: Finished a list after exitcode: 0

    如上,server端新增加的文件test-server已经被同步到客户端上

    在客户端192.168.0.212查看:

    root@node2 www]# ll

    total 0

    -rw-r--r-- 1 www www 0 Jan 23 14:55 test-server

    [root@node2 www]#

    注意:lsyncd只同步lsyncd服务启动后,所配置目录/data/www 所发生的更新,所以配置之前请保证需要同步的两边一致。

    四、服务器端和客户端互相同步

    参照如上配置,在客户端部署服务器端(也就是lsyncd)相关设置,在服务器部署原来的客户端相关配置(也就是rsync)

    北丐洪七公--Jeff
    Dignity comes from strength, strength comes from struggle!
    本文版权归作者和博客园共有,欢迎转载,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    Integer判等的陷阱:你知道Integer内部高速缓冲区IntegerCache吗?
    Unicode 是不是只有两个字节,为什么能表示超过 65536 个字符
    java中Char到底是什么格式的编码
    Java中char和String 的深入理解
    关于serialVersionUID的说明
    Java中的instanceof和isInstance基础讲解
    编码(1)学点编码知识又不会死:Unicode的流言终结者和编码大揭秘
    知识图谱和图卷积(贪心学院)——学习笔记
    索尼相机,索尼W35,Sony Cyber-shot DSC-w35
    高斯分布与高斯过程梳理
  • 原文地址:https://www.cnblogs.com/wangyifu/p/7202563.html
Copyright © 2020-2023  润新知