官方文档

https://axkibe.github.io/lsyncd/
https://github.com/axkibe/lsyncd

lsyncd简介

Lsyncd使用lua语言对inotify和rsync进行封装,使用文件系统事件接口(inotify或fsevents)来监视对本地文件和目录的更改,Lsyncd将这些事件整理几秒钟,然后生成一个或多个进程以将更改同步到远程文件系统,默认同步方法是rsync。是一种轻量级的实时镜像解决方案,不需要新的文件系统或块设备,Lysncd不会妨碍本地文件系统性能

可以通过配置文件实现细粒度的自定义。自定义操作配置甚至可以从头开始编写,从shell脚本到用Lua语言编写的代码

Lsyncd 2.2.1在所有源计算机和目标计算机上都需要rsync> = 3.1。

安装

在ubuntu和debian,lsyncd已经收入到其官方镜像源中,直接使用apt-get安装即可
apt-get install rsyncd

lsyncd配置

lsyncd的配置是用lua语言编写,一般为/etc/lsyncd.conf,常用的主要是两部分:

setting部分
里面是全局变量,–后面的表示注释,常见配置如下:

settings {logfile = "/var/log/lsyncd/lsyncd.log",   --日志文件
pidfile = "/var/run/lsyncd.pid",   --记录进程ID的文件,可以不用配置
statusFile = "/var/log/lsyncd/lsyncd.status",   --运行状态文件,包括记录一些监控目录的变更信息
statusInterval = 5,  --将lsyncd的状态写入上面的statusFile的间隔,默认10秒
nodaemon = true, --表示不启用守护模式,默认
inotifyMode = "CloseWrite",  --指定inotify监控的事件,默认是CloseWrite,还可以是Modify或CloseWrite or Modify
maxProcesses = 5,   --同步进程的最大个数。假如同时有10个文件需要同步,而maxProcesses=5,则最大能看到有5个rysnc进程
maxDelays = 1,   --累计到多少所监控的事件激活一次同步,即使后面的delay延迟时间还未到
inist = ture, --keep running at startup although one or more targets failed due to not being reachable.  一般不用配置
}

sync部分
主要用来定义同步时的一些设置,可以同时同步多个目录,只需要在该代码块中事先定义好多个sync即可。一般第一个参数指定lsyncd以什么模式运行,主要有rsync、rsyncssh、direct三种模式:

default.rsync :默认的rsync配置会将事件聚合到delay秒或1000个独立的不可折叠事件,这些事件首先发生。然后它会产生一个Rsync,并带有所有已更改文件的过滤器。过滤器列表通过管道传输到Rsync,可以进行本地或远程的文件同步,常见配置如下

sync {default.rsync,source = "/tmp/src",      --同步原目录target = "rsync_user@172.16.1.41::backup",   --同步目的地址delete = "running",   --目标目录和源目录不同时的删除方式,四种,详解见下面exclude = { "*.txt", ".tmp" },   --排除同步的文件,可以用rsync的正则delay = 3,         --累计事件,等待delay秒后进行rsync同步,默认15秒(最大累计到1000个不可合并的事件)。也就是15s内监控目录下发生的改动,会累积到一次rsync同步,避免过于频繁的同步。(可合并的意思是,15s内两次修改了同一文件,最后只同步最新的文件)init = false,    --只同步进程启动以后发生改动事件的文件,原有的目录即使有差异也不会同步。默认是truersync = {      --这里是rsync的同步配置binary = "/usr/bin/rsync",     archive = true,compress = true,       verbose = true,     --同步详细模式输出password_file = "/etc/rsync.pwd",_extra = {"--bwlimit=200"},    其他的一些配置,这里表示限速,单位kb/s}
}

补充

上面配置文件中的delete各值解释:
delete  =  true       #在目标上删除源中没有的内容。在启动时以及在正常操作期间删除的内容
delete  =  false      #不会删除目标上的任何文件。不在启动时也不在正常操作上
delete  =  'startup'  # Lsyncd将在启动时删除目标上的文件,但不会在正常操作时删除
delete  =  'running'  # Lsyncd在启动时不会删除目标上的文件,但会删除正常操作期间删除的文件排除:可以指定两个附加参数来同步:
excludeFrom =  FILENAME    loads exclusion rules from this file, on rule per line
exclude =  LIST    loads exclusion rules from this list of strings
排除规则在rsync的排除模式之后建模,但稍微简单一些。Lsyncd支持这些功能:
通常,如果某个事件的路径名的任何部分(参见第3层以下)与文本匹配,则将其排除。例如文件“/ bin / foo / bar”匹配规则“foo”。
如果规则以斜杠开始,则只会在路径名的开头匹配
如果规则以斜线结尾,则只会在路径名的末尾匹配
?匹配不是斜杠的任何字符。
* 匹配零个或多个不是斜线的字符
** 匹配零个或多个字符,这可以是斜杠。delete 和 exclude 本来是rsync的配置选项

default.direct :Default.direct可以用来保持两个本地目录同步,比使用default.rsync更好的性能。Default.direct在启动时使用(就像default.rsync一样)rsync来初始化目标目录与源目录的同步。但是,在正常操作期间,default.direct使用/ bin / cp,/ bin / rm和/ bin / mv来保持同步。所有参数就像default.rsync一样

sync {default.direct,source  = "/home/user/src/",target  = "/home/user/trg/"
}

default.rsyncssh :同步到远程主机目录,rsync的ssh模式,需要使用key来认证。此配置不同于标准rsync配置,因为它使用ssh命令在目标主机本地移动文件或目录,而不是再次删除和传输。这种配置产生了类似于default.rsync的Rsync进程,但是会产生/usr/bin/ssh HOST mv ORIGIN DESTINATION命令。

与default.rsync不同,它不需要统一的target参数,但需要host并targetdir分开。
Rsync的选项可以通过rsync上面所描述的default.rsync中的参数进行更改
Rsync的选项可以通过rsync上面所描述的default.rsync中的参数进行更改。

除此之外,可以通过ssh参数配置ssh 。

binary = FILENAME   #Lsyncd calls this binary as ssh (default: /usr/bin/ssh)
identityFile = FILE    #Uses this file to identify for public key authentication.
options = TABLE        #A table of addition extended options to pass to ssh's -o option.
port = PORT            #Adds --port=PORT to the ssh call.
_extra = STRING TABLE  #Similar to rsync._extra this can be used as quick workaround if absolutely needed.
settings {logfile = "/var/log/lsyncd.log",statusFile = "/var/log/lsyncd-status.log",statusInterval = 20
}sync {default.rsyncssh,source="/srcdir",host="remotehost",excludeFrom="/etc/lsyncd.exclude",targetdir="/dstdir",rsync = {archive = true,compress = false,whole_file = false},ssh = {port = 1234}
}

启动lsyncd

lsyncdd所有日志消息按类别排序。默认情况下,Lsyncd缺少日志消息。通过指定,您可以将Lsyncd转换为motormouth -log all。

lsyncd -log all CONFIGFILE

这可能很容易变得太多。一个特别有用的类别是“Exec”,它将记录Lsyncd产生的所有进程的命令行。

lsyncd -log Exec CONFIGFILE

测试Lsyncd配置时-nodaemon是一个非常方便的标志。使用此选项,Lsyncd不会分离,并且不会成为守护进程。所有日志消息都是在控制台上打印的配置日志记录工具(stdout和stderr)之外的。

lsyncd -nodaemon CONFIGFILE

当没有配置文件时,可以直接在命令中指定,如下:

lsyncd -rsync /home/USER/src remotehost:dst lsyncd -rsyncssh
/home/USER/src REMOTEHOST TARGETDIR

当默认初始启动同步失败时,Lsyncd将以错误消息终止。它是这样设计的,所以配置故障可见地报告给可能的初始用户。但是,在生产过程中可能会完成远程目标,但是您希望Lsyncd始终启动并不断尝试同步到远程目标,直到它启动。

lsyncd -insist -rsync /home/USER/src remotehost:dst

在生产模式下,建议坚持。它也可以在配置文件中的settings {}命令中指定。

rsync安装与配置

安装
在ubuntu或者debian下,直接 apt-get install rsync 即可

配置
/etc/rsyncd.conf

uid = root     # 表示同步的文件所属用户
gid = root     # 表示同步的文件所属用户组
use chroot = yes      # 安全相关,表示在同步时,是否将同步目录转为根目录
max connections=0     # 允许客户端的最大连接数,0表示不限制
log file=/var/log/rsyncd/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock[backup]
path = /var/tmp/
read only = no
list = yes
auth users = rsyncuser
secrets file = /etc/rsync.pas

/etc/images.pas 密码文件

rsyncuser:123456
chmod 600 /etc/images.pas # rsync的密码文件权限必须是600 /usr/bin/rsync
–daemon config=/etc/rsyncd # 启动

问题

1、在rsync中,他的密码文件包括用户名和密码两部分,用“:”隔开,但是在lsyncd中,配置里的密码文件只写密码就行,不要写用户名,要不rsync会同步不成功

扩展

lsyncd不仅仅可以用来同步,还可以自己写各种action,监控指定目录的文件,根据触发的事件执行自己定义的命令,这个没有实践,可以参考 https://www.cnblogs.com/sunsky303/p/8976445.html

本文参考原文:
https://www.cnblogs.com/sunsky303/p/8976445.html
https://segmentfault.com/a/1190000002737213

lsyncd搭建和使用(含rsync配置)相关推荐

  1. python仿真搭建_仿真秀学院|从零开始学ANSA二次开发:如何利用Designer搭建窗口,含安装步骤...

    原标题:仿真秀学院|从零开始学ANSA二次开发:如何利用Designer搭建窗口,含安装步骤 作者 | 团长 仿真秀专栏作者 首发 |仿真秀App 导读:大家好,我是团长,是一名CAEer,还是一名C ...

  2. 【IT 常识】安装(Install)、部署(Deploy)、搭建(Setup)和配置(Configure、Set)的区别

    文章目录 前言 安装.部署与搭建 Install vs. Setup/Set up Install vs. Deploy Setup/Set up vs. Deploy 设置与配置 Set vs. C ...

  3. CentOS7.4下 VNC Server的搭建和客户端的连接配置

    CentOS7.4下 VNC Server的搭建和客户端的连接配置 服务器版本:CentOS Linux release 7.4.1708 (Core) yum方式安装VNC server yum i ...

  4. rsync配置与应用(转)

    rsync配置与应用(转) 关注ming1016@gmail.com 添加标签: 简介 对于选择linux 作为应用平台的的中小型企业或网站来说,往往面临如何实现数据远程备份或者网站镜象的问题,虽然有 ...

  5. PHP环境搭建:Windows 7下安装配置PHP+Apache+Mysql环境教程(转)

    转至:http://www.leapsoul.cn/?p=695 这两天刚装好Windows 7,碰巧前段时间有朋友问我Windows下如何安装搭建PHP环境,所以打算勤劳下,手动一步步搭建PHP环境 ...

  6. PHP环境搭建:Windows 7下安装配置PHP+Apache+Mysql环境教程

    来源:http://www.leapsoul.cn/?p=695 这两天刚装好Windows 7,碰巧前段时间有朋友问我Windows下如何安装搭建PHP环境,所以打算勤劳下,手动一步步搭建PHP环境 ...

  7. spring cloud+dotnet core搭建微服务架构:配置中心续(五)

    前言 上一章最后讲了,更新配置以后需要重启客户端才能生效,这在实际的场景中是不可取的.由于目前Steeltoe配置的重载只能由客户端发起,没有实现处理程序侦听服务器更改事件,所以还没办法实现彻底实现这 ...

  8. Kubernetes集群搭建之Etcd集群配置篇

    docker快速启动etcd脚本 https://www.cnblogs.com/ka1em/p/11300355.html rm -rf /tmp/etcd-data.tmp && ...

  9. 技术干货实战(4)- 分布式集群部署模式下Nginx如何实现用户登录Session共享(含详细配置与代码实战)

    原文链接:技术干货实战(4)- 分布式集群部署模式下Nginx如何实现用户登录Session共享(含详细配置与代码实战) 最近有小伙伴催更,让debug多写点技术干货,以便多学习.巩固一些技能:没办法 ...

  10. 基于git(分布式版本控制系统)的各种服务器权限工具对比 Gitlab服务器搭建 以及邮箱、LDAP配置 实现公司多人协同开发

    前言 作为大一的小朋友,虽然学的专业和CS有那么一点关系,但放到实习的工作当中,那是完全不够用了:( 在实习老师的指导和帮助下,在实习的头个礼拜,逐步接触了解了git--开源分布式版本控制系统.并在第 ...

最新文章

  1. java中velocity定义宏标签_velocity自定义标签和指令(转:zwj)
  2. 福利 | 与院士和业界翘楚共话智能无人系统!
  3. 闭门沙龙招募:吃吃喝喝聊CG | 真格×量子位
  4. @property、@sythesize以及Ivar和@dynamic讲解(下)
  5. Future和CompletableFuture的区别和对比,以及Future主要的四个缺点——不能回调会阻塞、批量任务处理彼此依赖会阻塞、不能多个任务级联执行、得不到最先完成的任务
  6. 为什么一定要好好睡觉?
  7. 李彦宏千字愿景内部信:10次提到“用户”
  8. BZOJ 1878 hh的项链(简单莫队)
  9. 数据操作类:增删改查
  10. 苹果新漏洞 “Shrootless” 可使攻击者在macOS 系统上安装后门
  11. 故障常见原因归类分析及预防和应对措施
  12. 1036 跟奥巴马一起编程 (15 分)—PAT (Basic Level) Practice (中文)
  13. 石川:未知风险,错误定价,还是数据迁就?
  14. matlab中英文文献,matlab外文文献
  15. 是什么让物联网放慢脚步?
  16. 论QQ如何发大菜狗表情
  17. win10安装wsl步骤
  18. 【算法竞赛模板】二分图(染色法、匈牙利法)
  19. 生活随记-冬天的馈赠
  20. 推荐系统经典算法之协同过滤

热门文章

  1. 凸优化极简笔记(三):椭圆方程的矩阵形式
  2. VMware Workstation 英文改中文界面
  3. python开源报表工具_12个最好的开源报表工具
  4. 数据库表数据怎么恢复数据_恢复糟透了。 这是数据。
  5. 计算机一级证件照尺寸,照相馆不会告诉你的哪些事:常用证件照尺寸汇总
  6. 国产CAD_谁说国产系统没有CAD软件可以用?
  7. Mac CAD2018 安装完成后,打开注册机时出现 应用程序“02_注册机”不能打开。
  8. TYUT太原理工大学2022需求工程考试简答题
  9. Python图形处理
  10. 网传腾讯大规模裁员测试工程师,腾讯相关人员否认