项目有文件实时同步备份的需求,做了一下调查,比较好的解决方法是使用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,还可以是ModifyCloseWrite or Modify
  • maxProcesses 同步进程的最大个数。假如同时有20个文件需要同步,而maxProcesses = 8,则最大能看到有8个rysnc进程
  • maxDelays 累计到多少所监控的事件激活一次同步,即使后面的delay延迟时间还未到

sync
里面是定义同步参数,可以继续使用maxDelays来重写settings的全局变量。一般第一个参数指定lsyncd以什么模式运行:rsyncrsyncsshdirect三种模式:

  • default.rsync :本地目录间同步,使用rsync,也可以达到使用ssh形式的远程rsync效果,或daemon方式连接远程rsyncd进程;
    default.direct :本地目录间同步,使用cprm等命令完成差异文件备份;
    default.rsyncssh :同步到远程主机目录,rsync的ssh模式,需要使用key来认证

  • source 同步的源目录,使用绝对路径。

  • target 定义目的地址.对应不同的模式有几种写法:
    /tmp/dest :本地目录同步,可用于directrsync模式
    172.29.88.223:/tmp/dest :同步到远程服务器目录,可用于rsyncrsyncssh模式,拼接的命令类似于/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,还有startuprunning值,请参考 Lsyncd 2.1.x ‖ Layer 4 Config ‖ Default Behavior。

rsync
(提示一下,deleteexclude本来都是rsync的选项,上面是配置在sync中的,我想这样做的原因是为了减少rsync的开销)

  • bwlimit 限速,单位kb/s,与rsync相同(这么重要的选项在文档里竟然没有标出)
  • compress 压缩传输默认为true。在带宽与cpu负载之间权衡,本地目录同步可以考虑把它设为false
  • perms 默认保留文件权限。
  • 其它rsync的选项

其它还有rsyncssh模式独有的配置项,如hosttargetdirrsync_pathpassword_file,见后文示例。rsyncOps={"-avz","--delete"}这样的写法在2.1.*版本已经不支持。

lsyncd.conf可以有多个sync,各自的source,各自的target,各自的模式,互不影响。

引用:

lsyncd实时同步搭建指南——取代rsync+inotify


更新至 2018-06-06

转载于:https://www.cnblogs.com/GO-NO-1/p/9146326.html

文件同步工具 lsyncd2.1.6 安装使用问题相关推荐

  1. Syncthing-P2P文件同步工具学习

    Syncthing-P2P文件同步工具学习 简介 windows安装 其他 linux安装 linux vps安装配置 linux vps内安装syncthing 简介 开源的文件同步工具,基于P2P ...

  2. 4.2w Star的文件同步工具,比VIP网盘还好用!

    关注TJ君,回复"武功秘籍"免费获取计算机宝典书籍 昨天圣诞夜TJ君却做了一件烦心的事情,是什么事情呢? 其实就是TJ君平时有时候会偷懒,把微信当作存储工具,一些小伙伴传过来的文件 ...

  3. Windows电脑值得下载使用的文件同步工具

    Windows电脑文件同步工具哪个好用?今天小西给大家推荐一款非常好用的文件同步工具,可以实现自动化同步.多设备(本地磁盘.移动硬盘.U盘.网盘等)同步,可以说实用性非常强. FileYee是一款Wi ...

  4. 远程文件同步工具--rsync

    远程文件同步工具--rsync rsync rsync同步简介 rsync同步方式 配置源的两种方法 rsync常用命令 rsync实验 1.本地复制 2.远程复制 1.配置rsync服务器 2.为备 ...

  5. Syncthing - P2P文件同步工具使用

    1 简介 随着数据的增长,我们对于文件的同步和备份需求也日趋强烈.各种网盘为我们在文件同步备份提供便利的同时,也在速度.安全和隐私等方面带来不小的限制和风险. Syncthing是一款开源免费跨平台的 ...

  6. 用树莓派搭建全功能NAS服务器(06):自带穿透的文件同步工具

    写在前面 说完了nextcloud,大家已经对于个人网盘不再陌生.但想要做到随时随地同步文件,还需要公网IP/内网穿透. 其实说到文件同步,还有一款自带内网穿透的P2P文件同步工具必须介绍一下,就是s ...

  7. Syncing文件同步工具(详解)

    简介: Syncthing是一种开源的文件同步工具,旨在实现跨多个设备之间的安全和私密的文件同步.它提供了一种去中心化的方法来同步文件,并通过点对点(P2P)技术直接在设备之间进行通信,而无需传统的云 ...

  8. 遥望星空FTP文件同步工具(附源码)1.0 发布

    FTP文件同步工具1.0 发布 主要功能: 1.支持多任务多线程 2.支持自动启动 3.支持2种时间触发方式 4.支持任务进度显示 5.支持WinFtp Server.ftpserver.exe.Se ...

  9. Rsync 3.1.0 发布,文件同步工具

    文件同步工具Rsync 3.1.0发布.2013-09-29 上一个版本还是2011-09-23的3.0.9 过了2年多.Rsync基本是Linux上文件同步的标准了,也可以和inotify配合做实时 ...

最新文章

  1. 华为手环怎么没有上鸿蒙,不再是大号手环!华为鸿蒙手表来了:要和苹果抢生态?...
  2. python三维圆曲面_python – matplotlib中的曲面和三维轮廓
  3. AJAX应用之注册用户即时检测
  4. 炒股的最终下场(搞笑趣图)
  5. P1375 嵌套矩形
  6. MySQL 基本信息的查询(初始化配置信息 my.ini)
  7. jquery事件绑定和解除绑定bind、unbind、one
  8. 或许是介绍Android Studio使用Git最详细的文章
  9. 程序员如何成为一名自由职业者?
  10. c语言的常用英语单词和翻译,c语言通用英语词汇带翻译
  11. pip 下载whl文件
  12. parted如何将磁盘所有空间格式化_磁盘-使用parted格式化大容量数据盘
  13. ADNI数据集相关概念整理
  14. 一级域名二级域名区别
  15. url“forum.php,如何让discuz论坛首页打开不显示forum.php的方法分享
  16. word表格换页自动续前表的方法
  17. Mybatis执行流程、缓存原理以及相关面试题
  18. 【Linux】进程状态
  19. 在c语言中while与do-while,C语言中while /do while语句用法
  20. APP地推的一些经验

热门文章

  1. java jsch_java使用JSCH实现SFTP文件管理
  2. 机器学习--多标签softmax + cross-entropy交叉熵损失函数详解及反向传播中的梯度求导
  3. 图像去噪--Noise2Noise: Learning Image Restoration without Clean Data
  4. 视频动作识别--Convolutional Two-Stream Network Fusion for Video Action Recognition
  5. loadrunner11 linux服务器,Loadrunner怎么执行linux服务器上的shell脚本?
  6. windows AD/DNS服务器搭建
  7. 遗传算法c语言程序,遗传算法c语言代码.doc
  8. 工作流引擎 SpringBoot+flowable完美结合,快速实现工作流,so easy
  9. instancesRespondToSelector与respondsToSelector的区别
  10. PHP中htmlentities跟htmlspecialchars的区别