因公司业务需要需要实时同步日志文件,刚一开始使用的是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. iloc与loc总结

    pandas中操作DataFrame时候,经常用到**loc,iloc,at,iat,ix** loc函数通过行索引"index"中具体的值来去行的数据(如取"index ...

  2. 关于ClassLoader 和Class的俩个记录

    public class ZFBCheckAccountTask extends TaskThread { 断点 @CallerSensitive public ClassLoader getClas ...

  3. Webmin 远程命令执行漏洞(CVE-2019-15107)

    影响版本 Webmin 1.920及以下版本 poc地址 https://github.com/Mr-xn/Penetration_Testing_POC/tree/master/CVE-2019-1 ...

  4. 🔥 LeetCode 热题 HOT 100(51-60)

    142. 环形链表 II 思路:快慢指针,快慢指针相遇后,慢指针回到头,快慢指针步伐一致一起移动,相遇点即为入环点 /** * Definition for singly-linked list. * ...

  5. Kubernetes的基本概念和术语

    Kubernetes中的大部分概念如Node.Pod.Replication Controller. Service等都可以被看作一种资源对象,几乎所有资源对象都可以通过 Kubernetes提供的k ...

  6. vue 快速入门 系列 —— vue-cli 上

    其他章节请看: vue 快速入门 系列 Vue CLI 4.x 上 在 vue loader 一文中我们已经学会从零搭建一个简单的,用于单文件组件开发的脚手架:本篇,我们将全面学习 vue-cli 这 ...

  7. badboy如何录制jmetet脚本

    网盘下载: https://pan.baidu.com/s/1mTOEeE47tmk29_wndID3iw 傻瓜式安装即可, 内附教程 1. 打开Badboy, 新建一个文件 2.  输入要录制的网址 ...

  8. Flutter集成高德定位和地图功能

    定位集成 配置高德定位依赖库 新建 Flutter 项目,使用 Android Studio 打开项目里的 android 工程,或者右键 android 目录-> flutter -> ...

  9. 9419页最新一线互联网Android面试题解析大全

    网上高级工程师面试相关文章鱼龙混杂,要么一堆内容,要么内容质量太浅, 鉴于此我整理了如下安卓开发高级工程师面试题以及答案帮助大家顺利进阶,下面进入正题: 一.Android相关 1.Activity ...

  10. Postman API 接口测试、Jenkin 持续集成测试

    Postman 是一个创建和使用API的应用,Postman 对于Web开发者来说非常有用,Postman 带来的便利有很多,诸如: RESTFul接口测试不依赖其他端,进度不受影响 测试脚本即文档, ...