• lsyncd + rsync 实时同步搭建


    一、inotify和lsync

    inotify和lsyncd对比一下,发现虽然lsyncd没有inotify那么真正的实时同步,但是lsyncd的同步基本上可以满足基本实时同步的要求,而且lsyncd的配置相对于inotify来说非常简单。

    二、简介

    服务端:此服务的服务端是指文件推送的目的服务器

    客户端:需要被同步的文件所在的服务器

    本次需要将客户端/data/src/目录下的文件推送到服务端/data/dest/

    三、安装rsync

    服务端和客户端都需要安装

    yum源安装:

      yum install rsync -y

      编辑服务端配置文件,没有的需要新建

      vim /etc/rsyncd.conf

     1 uid=root  # 服务器端传输文件时,要发哪个用户和用户组来执行,默认是nobody 根据实际情况修改成对应的用户和组 --chmod= 改成文件的权限
     2 gid=root  #
     3 use chroot=no #用chroot,在传输文件之前,服务器守护程序在将chroot 到文件系统中的目录中,这样做的好处是可能保护系统被安装漏洞侵袭的可能。缺点是需要超级用户权限。另外对符号链接文件,将会排除在外
     4 max connections=200 #允许的最大连接数
     5 timeout=600  #超时时间
     6 port=873 服务器的端口号 默认为873
     7 lock file=/var/run/rsync.lock
     8 log file=/var/log/rsyncd.log
     9 
    10 
    11 [test]     #  模块名
    12 path = /data/dest  # 目标目录13 comment = this is test  # 说明
    14 auth users = test  # 认证用户
    15 secrets file = /etc/rsyncd.secrets # 认证用户配置文件
    16 ignore errors  #忽略不重要的错误 
    17 read only = no  
    18 write only = no
    19 hosts allow = client  # 允许的传文件过来的客户端
    20 hosts deny = *  #不允许传文件过来的客户端

      编辑认证文件:

        echo "test:test" > /etc/rsyncd.secrets

        chmod 600 /etc/rsyncd.secrets

      启动rsyncd服务

      /usr/bin/rsync --daemon --config=/etc/rsyncd.conf

      无信息输出即传输成功

    至此,服务端配置就已经完成,客户端的rsync安装完成即可。

    四、安装lsyncd

      注:此服务只需要在客户端配置

      下载服务安装环境:

        yum install cmake lua-devel -y

      下载lsyncd服务并安装:

    [root@localhost ~]# cd lsyncd/
    [root@localhost lsyncd]# ls
    bin2carray.lua  CMakeLists.txt  default-direct.lua  default-rsyncssh.lua  examples    INSTALL   lsyncd.lua  tests
    ChangeLog       config.h.in     default.lua         distclean.sh          fsevents.c  lsyncd.c  m4
    cmake           COPYING         default-rsync.lua   doc                   inotify.c   lsyncd.h  README.md
    [root@localhost lsyncd]# cmake .
    。。。。。。
    [root@localhost lsyncd]# make && make install

      安装完成。

      配置lsyncd.conf

        vim /etc/lsyncd.conf

        

     1 settings {
     2         logfile = "/var/log/lsyncd/lsyncd.log",
     3         statusFile = "/tmp/lsyncd.stat",
     4         inotifyMode ="CloseWrite",
     5         statusInterval = 1,
     6         maxDelays = 1,
     7 }
     8 
     9 sync_base_wp = {
    10         default.rsync,
    11         init=false,
    12         delete = true,
    13         rsync = {
    14                 binary   = "/usr/bin/rsync",
    15                 archive  = true,
    16                 compress = true,
    17                 password_file = "/etc/rsyncd.pass"
    18         }
    19 }
    20 
    21 sync { sync_base_wp,source="/data/src",target = "test@server_ip::test" }

      创建日志目录 mkdir /var/log/lsyncd

      创建密码文件 echo "test" > /etc/rsyncd.pass;chmod 600 /etc/rsyncd.pass

      启动lsyncd       lsyncd -log all /etc/rsyncd.conf

      注:如果你需要用--include 参数,但是lsyncd直接提供的是exclude和excludeFrom,所以你需要把所有不需要传输的文件类型都列出来,有的时候是不合适的。这个时候你可使用_extra = { "--include=" ,...}来实现。

    五、测试

      略

    至此完成搭建。

    附rsync和lsync配置文件详解:

      rsync:https://yq.aliyun.com/articles/43202

      lsync:https://www.kancloud.cn/hiyang/linux/390195

     

        

  • 相关阅读:
    堆得简单介绍以及堆排序
    从交换两个变量的值来看程序员的“奇技淫巧”
    两道有意思的题目
    mac上使用brew
    安全考虑,binlog_row_image建议尽量使用FULL
    Python3.6新特性
    自动化测试基础篇--Selenium浏览器操作
    自动化测试基础篇--Selenium Xpath定位
    自动化测试基础篇--Selenium元素定位
    自动化测试基础篇--Selenium Python环境搭建
  • 原文地址:https://www.cnblogs.com/chengjiawei/p/9051664.html
Copyright © 2020-2023  润新知