因公司业务需要需要实时同步日志文件,刚一开始使用的是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方案在优化上面有没有什么要注意的地方?

lsyncd替代inotify+rsync实现实时同步的更多相关文章

  1. 【转】inotify+rsync实现实时同步

    [转]inotify+rsync实现实时同步 1.1 什么是实时同步:如何实现实时同步 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化 发现目录中数据产生变化,就利用rsync服 ...

  2. inotify+rsync实现实时同步部署

    1.1.架构规划 1.1.1架构规划准备 服务器系统 角色 IP Centos6.7 x86_64 NFS服务器端(NFS-server-inotify-tools) 192.168.1.14 Cen ...

  3. inotify +rsync进行实时同步

    1.安装rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpmyum -y install ino ...

  4. inotify+rsync实现实时同步

    第1章 数据实时同步介绍 1.1 什么是实时同步:如何实现实时同步 A. 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化 B. 发现目录中数据产生变化,就利用rsync服务推送到 ...

  5. inotify+rsync实现实时同步并邮件通知

    服务器之间文件实时同步,监控文件的变化,发送邮件通知,并实时同步文件. 由于人工同步多台服务器的文件比较吃力,可以借助这样一套软件,自动化的实现这样的工作. 并且可以事实监控变化发送邮件给系统管理人员 ...

  6. inotify+rsync文件实时同步

    原文转自http://dl528888.blog.51cto.com/2382721/771533/ 之前做了“ssh信任与scp自动传输脚本”的技术文档,此方案是作为公司里备份的方法,但在实际的运行 ...

  7. inotify+rsync目录实时同步

    两台linux服务器系统CentOS7 一台Apache IP:192.168.155.130(发布文件服务器,也可以叫rsync客户端) 一台nginx IP:192.168.155.131(同步镜 ...

  8. inotify+rsync实现实时同步(附解决crontab中无法执行python脚本的问题)

    1.准备环境 # 系统支持的话,下面的目录就会存在 ls /proc/sys/fs/inotify/ rpm -qa inotify-tools yum -y install inotify-tool ...

  9. inotify+rsync文件实时同步报错:usr/local/bin/inotifywait: error while loading shared libraries: libinotifytools.so.0:

    解决办法: ln -sv /usr/local/lib/libinotify* /usr/lib/ /usr/lib64/libinotifytools.so.

随机推荐

  1. js学习笔记之正则

    () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串.(\s*)表示连续空格的字符串.[]是定义匹配的字符范围.比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字 ...

  2. jquery : 菜单根据url变颜色

    //菜单根据url变颜色$(document).ready(function(){ $('#nav li a').each(function(){ if($($(this))[0].href==Str ...

  3. Linux从头学05-系统启动过程中的几个神秘地址,你知道是什么意思吗?

    作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...

  4. PHP-CGI远程代码执行漏洞(CVE-2012-1823)

    影响版本 php < 5.3.12 or php < 5.4.2 访问http://p:8080/index.php?-s即爆出源码,说明漏洞存在 POST /index.php?-d+a ...

  5. 大数据学习(17)—— HBase表设计

    为啥要把表设计拿出来独立成章?因为我觉得像我这样搞了很多年Java后端开发的技术人员,在学习HBase的时候,会受到关系型数据库3NF.BCNF的影响.事实上,数据库范式在HBase里完全没用,必须转 ...

  6. 《MySQL实战45讲》(1-7)笔记

    <MySQL实战45讲>笔记 目录 <MySQL实战45讲>笔记 第一节: 基础架构:一条SQL查询语句是如何执行的? 连接器 查询缓存 分析器 优化器 执行器 第二节:日志系 ...

  7. etcd raft 处理流程图系列2-wal的读写

    本文仅介绍wal的基本处理,如create.open.close.read等操作.鉴于篇幅原因,下面介绍replayWAL(启动raft节点时执行)函数涉及的读文件操作:从wal目录中加载snapsh ...

  8. CSS样式逐li添加,执行完,清空,反复执行

    function change_light(el) { el.hide() let i = 0; function temp() { if (i > el.length - 1) { el.hi ...

  9. appium自动化测试(3)-控件定位&中文输入

    参考-控件定位 http://www.2cto.com/kf/201410/340345.html appium接口 http://appium.io/slate/en/master/?python# ...

  10. Python从零开始编写控制程序(一)

    Python之从零开始编写控制程序(一) 在此声明:本博客仅供学习参考,任何产生相关违法犯罪行为与本人无关. 另外如果有师傅有好的思路和想法,可以和我一起沟通交流. 最近在一直尝试做Powershel ...