zoukankan      html  css  js  c++  java
  • lsyncd替代inotify+rsync实现实时同步

    因公司业务需要需要实时同步日志文件,刚一开始使用的是inotify+rsync来实现实时同步,但时间久而久之发现同步的速度越来越慢,往往延迟好几个小时。查了一下网上的inotify+rsync方案基本一致,基本都是使用后台运行脚本,持续监视文件,然后同步。我也查了一下是否有优化的可能性,但也因暂未找到相关优化方案,所找到了 lsyncd,发现lsyncd相较于inotify+rsync方案更为方便,安装配置也更加简单。特试用了一下,感觉还是不错。所特记录一笔。

    1. inotify+rsync方案配置

    点击前往➡️

    2. lsyncd方案配置

    2.1 lsyncd介绍

    @来自网上搜索

    lsyncd 是一个支持实时、双向、多机器的多模式文件同步工具。使用 Lua 语言封装了 inotify 和 rsync 工具,采用了 Linux 内核(2.6.13 及以后)里的 inotify 触发机制,然后通过 rsync 去差异同步,达到实时的效果。
    简单来说lsyncd就是将 inotifyrsync合并成一个东西,不过机器上还是需要有rsync来同步的哦。

    2.2 安装

    2.2.1 安装lsyncd

    只需要在一台机器上安装,比如你需要将A上的文件同步到B上,那你只需要在A上安装lsyncd,配置lsyncd同理。

    #lsyncd有两种安装方式,可直接yum安装也可编译安装。因编译安装比较麻烦,所以我这里采用的是yum安装方式。
    #yum安装需要配置epel源,这里使用的是阿里的源。如果已经安装过的可忽略
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    yum -y install lsyncd
    

    如果需要编译安装的点击下载安装包➡️编译安装软件包下载链接然后不会编译安装的自己百度哈,跟其他软件的编译安装一样的哈。

    2.2.2 安装rsync

    因之前有写过一次所不再重复,不会的可参考我之前的文章点击前往➡️

    3. 配置

    3.1 rsync配置

    因之前有写过一次所不再重复,不会的可参考我之前的文章点击前往➡️

    3.2 lsyncd配置

    lsyncd配置文件路径在 /etc/lsyncd.conf

    --- 这个符号开头的都是默认的配置文件,因lsyncd是由Lua编写的,注释符号不是 # 而是 --
    ----
    -- User configuration file for lsyncd.
    --
    -- Simple example for default rsync, but executing moves through on the target.
    --
    -- For more examples, see /usr/share/doc/lsyncd*/examples/
    --
    -- sync{default.rsyncssh, source="/var/www/html", host="localhost", targetdir="/tmp/htmlcopy/"}
    settings {
      logfile="/var/log/lsyncd/lsyncd.log",
      statusFile="/var/log/lsyncd/lsyncd.status",
      statusInterval=3,
      maxDelays=1,
      inotifyMode="CloseWrite or Modify",
      maxProcesses=12,
      nodaemon=true,
    }
    sync {
        default.rsync,
        source    = "/data/chenfan-logs/",
        target    = "root@127.0.0.1::log",
        delay     = 100,
        rsync     = {
            binary    = "/usr/bin/rsync",
            password_file = "/etc/rsync.pass",
            archive   = true,
            compress = false,
            verbose   = true
            }
        }
    

    lsyncd Github地址
    lsyncd官网
    lsyncd配置文件说明参考

    3. 结束

    使用了lsyncd后发现同步比原先的inotify+rsync方案快很多。在这里我想问一下,inotify+rsync方案在优化上面有没有什么要注意的地方?

  • 相关阅读:
    CentOS6.8编译安装lnmp(一)- 依赖库
    PHP7废弃$GLOBALS["HTTP_RAW_POST_DATA"]
    利用python处理自动化任务之查看文件夹大小和内容
    利用python处理自动化任务之批量新建文件夹(2)
    python处理自动化任务之批量新建文件夹
    利用python处理自动化任务之批量修改文件夹的名字
    利用python完成自动化的任务之遍历文件夹修改文件之后并保存备份
    python Matplotlib给坐标轴标签添加文本框
    python-matplotlib添加水平和垂直的直线
    python-matplotlib绘制堆积的条形图
  • 原文地址:https://www.cnblogs.com/98record/p/lsyncd-ti-huaninotifyrsync-shi-xian-shi-shi-tong-b.html
Copyright © 2011-2022 走看看