文件同步工具 lsyncd2.1.6 安装使用问题
项目有文件实时同步备份的需求,做了一下调查,比较好的解决方法是使用lsyncd工具。这里主要记录一下遇到的问题及解决方法。
lsyncd 的相关介绍和对比可见:
lsyncd实时同步搭建指南——取代rsync+inotify
Linux下同步工具inotify+rsync使用详解
Linux文件系统Inotify机制
lsyncd官方文档:
Lsyncd - Live Syncing (Mirror) Daemon
1、安装问题
安装时需要先安装 lua和cmake,可直接使用apt-get:
apt-get install lua5.1
apt-get install lua5.1-dev
apt-get install cmake
接着可以下载 lsyncd-2.1.6 版本解压安装,解压后进入改目录:
cmake ,
make
make install
即可完成安装。
2、使用问题
如果使用在大型系统上,文件数量多、大,文件变化频繁,则要修改一些系统参数。
因为lsyncd 有用到 inotify监听,其中相关的主要是这几个参数:
#ls -l /proc/sys/fs/inotify/
total 0
-rw-r--r-- 1 root root 0 Oct 9 09:36 max_queued_events
-rw-r--r-- 1 root root 0 Oct 9 09:36 max_user_instances
-rw-r--r-- 1 root root 0 Oct 9 09:36 max_user_watches
/proc/sys/fs/inotify/max_user_instances 默认值: 128 指定了每一个real user ID可创建的inotify instatnces的数量上限
/proc/sys/fs/inotify/max_user_watches 默认值: 8192 指定了每个inotify instance相关联的watches的上限
/proc/sys/fs/inotify/max_queued_events 默认值: 16384,Inotify 管理的队列的最大长度
如果监听的文件数量大,则增大 max_user_watches(否则可能启动失败),如果文件变化频繁,则增大max_queued_events(否则队列溢出,导致部分文件未同步或lsyncd重启) :
一次性方法:
sysctl fs.inotify.max_user_watches=xxxxxx
长久有效:
fs.inotify.max_user_watches=xxxxxx 写进 /ect/sysctl.conf,然后 sysctl -p 打印查看
(注意:max_queued_events 修改后,需要重启lsyncd才能生效----2018-6-14 更新说明)
参考:
linux 高效的文件系统事件监控 内核级解析方案 inotify
Lsyncd causes load while monitoring large filesystem.
3、基本参数介绍
settings
里面是全局设置,--
开头表示注释,下面是几个常用选项说明:
logfile
定义日志文件stausFile
定义状态文件nodaemon=true
表示不启用守护模式,默认statusInterval
将lsyncd的状态写入上面的statusFile的间隔,默认10秒inotifyMode
指定inotify监控的事件,默认是CloseWrite
,还可以是Modify
或CloseWrite or Modify
maxProcesses
同步进程的最大个数。假如同时有20个文件需要同步,而maxProcesses = 8
,则最大能看到有8个rysnc进程maxDelays
累计到多少所监控的事件激活一次同步,即使后面的delay
延迟时间还未到sync
里面是定义同步参数,可以继续使用maxDelays
来重写settings的全局变量。一般第一个参数指定lsyncd
以什么模式运行:rsync
、rsyncssh
、direct
三种模式:
default.rsync
:本地目录间同步,使用rsync,也可以达到使用ssh形式的远程rsync效果,或daemon方式连接远程rsyncd进程;default.direct
:本地目录间同步,使用cp
、rm
等命令完成差异文件备份;default.rsyncssh
:同步到远程主机目录,rsync的ssh模式,需要使用key来认证
source
同步的源目录,使用绝对路径。
target
定义目的地址.对应不同的模式有几种写法:/tmp/dest
:本地目录同步,可用于direct
和rsync
模式172.29.88.223:/tmp/dest
:同步到远程服务器目录,可用于rsync
和rsyncssh
模式,拼接的命令类似于/usr/bin/rsync -ltsd --delete --include-from=- --exclude=* SOURCE TARGET
,剩下的就是rsync的内容了,比如指定username,免密码同步172.29.88.223::module
:同步到远程服务器目录,用于rsync
模式
三种模式的示例会在后面给出。
init
这是一个优化选项,当init = false
,只同步进程启动以后发生改动事件的文件,原有的目录即使有差异也不会同步。默认是true
delay
累计事件,等待rsync同步延时时间,默认15秒(最大累计到1000个不可合并的事件)。也就是15s内监控目录下发生的改动,会累积到一次rsync同步,避免过于频繁的同步。(可合并的意思是,15s内两次修改了同一文件,最后只同步最新的文件)excludeFrom
排除选项,后面指定排除的列表文件,如excludeFrom = "/etc/lsyncd.exclude"
,如果是简单的排除,可以使用exclude = LIST
。
这里的排除规则写法与原生rsync有点不同,更为简单:
- 监控路径里的任何部分匹配到一个文本,都会被排除,例如
/bin/foo/bar
可以匹配规则foo
- 如果规则以斜线
/
开头,则从头开始要匹配全部- 如果规则以
/
结尾,则要匹配监控路径的末尾?
匹配任何字符,但不包括/
*
匹配0或多个字符,但不包括/
**
匹配0或多个字符,可以是/
delete
为了保持target与souce完全同步,Lsyncd默认会delete = true
来允许同步删除。它除了false
,还有startup
、running
值,请参考 Lsyncd 2.1.x ‖ Layer 4 Config ‖ Default Behavior。rsync
(提示一下,delete
和exclude
本来都是rsync的选项,上面是配置在sync中的,我想这样做的原因是为了减少rsync的开销)
bwlimit
限速,单位kb/s,与rsync相同(这么重要的选项在文档里竟然没有标出)compress
压缩传输默认为true
。在带宽与cpu负载之间权衡,本地目录同步可以考虑把它设为false
perms
默认保留文件权限。- 其它rsync的选项
其它还有rsyncssh模式独有的配置项,如
host
、targetdir
、rsync_path
、password_file
,见后文示例。rsyncOps={"-avz","--delete"}
这样的写法在2.1.*版本已经不支持。
lsyncd.conf
可以有多个sync
,各自的source,各自的target,各自的模式,互不影响。
引用:
lsyncd实时同步搭建指南——取代rsync+inotify
更新至 2018-06-06
文件同步工具 lsyncd2.1.6 安装使用问题的更多相关文章
- 文件同步工具BT Sync介绍和使用说明
BT Sync介绍 BT 下载,相信大伙儿都知道的.今儿个要介绍的 BT Sync,跟 BT 下载一样,都是 BitTorrent 公司发明滴玩意儿,都是采用 P2P 协议来进行传输. 简而言之,BT ...
- gofs使用教程-基于golang的开源跨平台文件同步工具
概述 gofs是基于golang开发的一款开箱即用的跨平台文件同步工具,开源地址如下:https://github.com/no-src/gofs,欢迎点个Star或者提交Issue和PR,共同进步! ...
- Rsync 3.1.0 发布,文件同步工具
文件同步工具Rsync 3.1.0发布.2013-09-29 上一个版本还是2011-09-23的3.0.9 过了2年多.Rsync基本是Linux上文件同步的标准了,也可以和inotify配合做实时 ...
- windows文件同步工具
windows 文件同步工具: realTimesync freefilesync second copy second copy注册码: Name:爱学府软件园 注册码:15BF-E46C-67 ...
- Lsyncd - 实时文件同步工具(精译)
原文: http://axkibe.github.io/lsyncd/ 描述 Lsyncd监视本地目录树事件监视器接口(inotify或fsevents).它聚集并组合事件几秒钟,然后生成一个(或多个 ...
- Rsync文件同步工具
前段时间因公司需求,需要把备份的文件进行同步保存,后面就想到了我们大家都最熟悉的文件同步工作Rsync,于是就捣鼓了一下午时间,然后总结了下大概过程和参数详情. 首先了解了下rsync同步的大致原理: ...
- Microsoft SyncToy 文件同步工具
Microsoft SyncToy SyncToy 是由 微软 推出的一款免费的文件夹同步工具.虽然名字中有一个 Toy,但是大家可千万不要误以为它的功能弱爆了.实际上,我感觉这款软件还真是摆脱了微软 ...
- Duplicate Manager Pro for Mac(重复文件查找工具)破解版安装
1.软件简介 Duplicate Manager Pro 是 macOS 系统上一款重复文件查找工具,可以帮你在 Mac 电脑上查找出磁盘上面的重复文件,然后让你对这些重复文件进行判断并删除,使 ...
- Linux文件同步工具之rsync
学习背景 1.最近公司的项目在使用jenkins做自动化构建,因为jenkins在构建时是比较耗性能的,便单独使用了一台服务器做构建服务器.但是个人觉得这样成本过高,单独拿一台服务器来构建并且该服务器 ...
随机推荐
- 底部线条css样式
1.首先固定宽高 (将文字移至左边,例如 “姓名:”) .line{ width:100%; height:40px; float:left; border-bottom:1px solid #ccc ...
- Winform下的语言国际化,几行代码轻松实现
最近做了一些关于winform的项目,需要用到winform的语言国际化,在初使化的时候用起来非常方便.可以参考一下: 核心逻辑: 预览效果演示: OK,以下是核心代码和操作流程 一,添加Langua ...
- 原生android(一)
一.移动APP的几种类型 1.Native APP:基于智能手机操作系统,并使用原生程序编写运行的应用程序,有IOS,Android,Windows Phone8等系统 2.Web APP:运行在智能 ...
- Netty源码分析第4章(pipeline)---->第7节: 前章节内容回顾
Netty源码分析第四章: pipeline 第七节: 前章节内容回顾 我们在第一章和第三章中, 遗留了很多有关事件传输的相关逻辑, 这里带大家一一回顾 首先看两个问题: 1.在客户端接入的时候, N ...
- docker node项目 连接mongodb
在弄docker部署node项目的时候遇到了连接mongdb的问题,记录一下问题解决办法 一.Docker 安装 MongoDB 1.查找Docker Hub上的mongo镜像 [root@VM_49 ...
- MyCat安装与测试教程 超详细!
MyCat安装与测试教程 超详细! MyCat基础知识 一.什么是MYCAT? 1. 一个彻底开源的,面向企业应用开发的大数据库集群 2. 支持事务.ACID.可以替代MySQL的加强版数据库 3. ...
- 《The Mythical Man-Month(人月神话)》读后感(2)
第10章 未雨绸缪 在化学领域中,在实验室可以进行的反应过程,并不能在工厂中一步实现.一个被称为“ 实验性工厂(pilot planet)”的中间步骤是非常必要的,它会为提高产量和在缺乏保护的环境下运 ...
- CF 1100C NN and the Optical Illusion(数学)
NN is an experienced internet user and that means he spends a lot of time on the social media. Once ...
- LeetCode 174. Dungeon Game (C++)
题目: The demons had captured the princess (P) and imprisoned her in the bottom-right corner of a dung ...
- 【Alpha版本发布】爬虫队长正在待命!
一.基础功能简介 本团队的爬虫能够从网上搜索相关内容, 并归类,把所爬到的网页或各种类型的文档下载到本地上. 上届团队Beta版本爬虫的主要功能如下: a)可爬取网页,问答页并进行问答文件分类. b) ...