码迷,mamicode.com
首页 > 其他好文 > 详细

lsyncd 代替inotify+rsync 配置

时间:2016-06-12 18:56:36      阅读:1510      评论:0      收藏:0      [点我收藏+]

标签:lsyncd

一、lsyncd介绍

二、lsyncd安装

三、lsyncd配置说明

四、lsyncd同步测试


1.lsyncd 介绍

Lsyncd 监视本地目录树事件监控器接口( inotify或fsevents ) 。通过秒级事件聚合,然后生成一个(或多个)进程来同步变化。默认情况下为结合rsync。 Lsyncd轻重量镜解决方案,安装不需要新的文件系统或块设备相对容易,并且不妨碍本地文件系统的性能。

Lysncd 实际上是lua语言封装了 inotify 和 rsync 工具,采用了 Linux 内核(2.6.13 及以后)里的 inotify 触发机制,然后通过rsync去差异同步,达到实时的效果。我认为它最令人称道的特性是,完美解决了 inotify + rsync海量文件同步带来的文件频繁发送文件列表的问题 通过时间延迟或累计触发事件次数实现。另外,它的配置方式很简单,lua本身就是一种配置语言,可读性非常强。lsyncd也有多种工作模式可以选择,本地目录cp,本地目录rsync,远程目录rsyncssh。

技术分享

2.lsyncd 安装

安装lua

# yum install lua lua-devel


安装lsyncd

下载:https://github.com/axkibe/lsyncd

# unzip lsyncd-master.zip 
# cd lsyncd-master
# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lsyncd
# make
# make insatll


3.配置文件说明

settings 配置参数说明:
logfile	=	FILENAME   //记录日志的文件
pidfile	=	FILENAME   //logs进程pid文件
nodaemon	=	true	//非独立进程运行
statusFile	=	FILENAME	//运行状态文件
statusInterval	=	NUMBER	//写入状态的时间间隔,默认是10s
logfacility	=	STRING	//syslog 设备,默认user
logident	=	STRING	//syslog 标识 (tag), 默认 "lsyncd"
inotifyMode	=	STRING	//系统inotify指定监听的变化,可以是"Modify"、"CloseWrite" (默认) 或"CloseWrite or Modify".
maxProcesses	=	NUMBER	//lsyncd 将派生的最大进程数
maxDelays	=	NUMBER //累计到多少所监控的事件激活一次同步,即使后面的delay延迟时间还未到

sync 说明:
lsyncd同步的模式三种模式
default.rsync
   #使用rsync同步的方式来同步本地目录及文件
default.rsyncssh:
   #对于ssh,需要目标主机启动sshd,并通过key来验证。
default.direct:
   #default.direct直接可以用来保持两个本地目录与更好的性能比使用default.rsync。
   在启动时直接使用(就像default.rsync)rsync最初同步源目录和目标目录。操作default.direct使用/bin/cp, /bin/rm and /bin/mv 保持增量同步。
   
Exclusions:
   excludeFrom	=	FILENAME //加载排除规则文件。
   监控路径里的任何部分匹配到一个文本,都会被排除,例如/bin/foo/bar可以匹配规则foo
   如果规则以斜线/开头,则从头开始要匹配全部
   如果规则以/结尾,则要匹配监控路径的末尾
   ?匹配任何字符,但不包括/
   *匹配0或多个字符,但不包括/
   **匹配0或多个字符,可以是/
   
   exclude	=	LIST // 加载排除规则列表
   如:
     sync {
    default.rsync,
    source    = "/home/user/src/",
    targetdir = "/home/user/dst/",
    exclude = { ‘.bak‘ , ‘.tmp‘ }
   }
   
source :同步源地址,使用绝对路径
targetdir:同步的目标地址,使用绝对路径
host:目标ip地址
port:端口,默认22,可不用加ssh
如: 
   sync {
   default.rsyncssh,
   source="/srcdir",
   host="remotehost",
   excludeFrom="/etc/lsyncd.exclude",
   targetdir="/dstdir",
   rsync = {
     archive = true,
     compress = false,
     whole_file = false
   },
   ssh = {
     port = 1234
   }
 }

 

 4.配置同步

ln -s /usr/local/lsyncd/etc/lsyncd.conf /etc/lsyncd.conf

 添加启动脚本

chmod +x /ect/init.d/lsyncd

 启动:

/etc/init.d/lsyncd start
Starting lsyncd:                                           [  OK  ]

 查看进程:

# ps -ef | grep lsync
root     17571     1  0 15:22 ?        00:00:00 /usr/local/lsyncd/bin/lsyncd -pidfile /var/run/lsyncd.pid /etc/lsyncd.conf
root     17577 16692  0 15:22 pts/1    00:00:00 grep lsync


测试同步:

192.168.1.87

192.168.1.87
# cd /data/ckl/
# mkdir list.1
vim spring
chuntian hua hui kai
ll spring 
-rw-r--r-- 1 root root 21 Jun 12 15:33 spring

查看192.168.1.88

# cd /data/ckl/
# ls -la
total 12
drwxr-xr-x 3 root root 4096 Jun 12 15:32 .
drwxr-xr-x 4 root root 4096 Jun 12 15:22 ..
drwxr-xr-x 2 root root 4096 Jun 12 15:33 list.1
过滤的目录未同步
# cd list.1/
# cat spring 
chuntian hua hui kai
# ll spring 
-rw-r--r-- 1 root root 21 Jun 12 15:33 spring

修改文件权限:

192.168.1.87

chmod 755 spring 
# ll spring 
-rwxr-xr-x 1 root root 21 Jun 12 15:33 spring

192.168.1.88

# ll spring 
-rw-r--r-- 1 root root 21 Jun 12 15:33 spring
文件未同步,因为设置的监听变化是:Modify


查看日志:

 tailf /tmp/lsyncd.log 
Sun Jun 12 15:22:05 2016 Normal: recursive startup rsync: /data/ckl/ -> 192.168.1.88:/data/ckl/ excluding
.bak
kk
Sun Jun 12 15:22:05 2016 Normal: Startup of "/data/ckl/" finished: 0
Sun Jun 12 15:32:34 2016 Normal: Rsyncing list
/list.1
Sun Jun 12 15:32:34 2016 Normal: Finished (list): 0
Sun Jun 12 15:33:04 2016 Normal: Rsyncing list
/list.1/.spring.swp
Sun Jun 12 15:33:04 2016 Normal: Deleting list
/data/ckl//list.1/.spring.swpx
Sun Jun 12 15:33:04 2016 Normal: Finished (list): 0
Sun Jun 12 15:33:04 2016 Normal: Finished (list): 0
Sun Jun 12 15:33:10 2016 Normal: Rsyncing list
/list.1/spring
Sun Jun 12 15:33:10 2016 Normal: Deleting list
/data/ckl//list.1/.spring.swp
Sun Jun 12 15:33:10 2016 Normal: Finished (list): 0
Sun Jun 12 15:33:10 2016 Normal: Finished (list): 0
Sun Jun 12 15:37:11 2016 Normal: Rsyncing list
/list.1/spring
Sun Jun 12 15:37:11 2016 Normal: Finished (list): 0


本文出自 “深呼吸再出击” 博客,请务必保留此出处http://ckl893.blog.51cto.com/8827818/1788292

lsyncd 代替inotify+rsync 配置

标签:lsyncd

原文地址:http://ckl893.blog.51cto.com/8827818/1788292

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!