使用lsync去同步你的文件

简介

作为运维肯定有文件同步的需求,比如高可用的两台nginx配置保持一致,静态页面保持一致等等,今天说下lsync,在lsync之前可能有的人是使用inotify+rsync方式来同步文件的,而lsync你可以看作inotify和rsync的结合

项目地址

https://github.com/lsyncd/lsyncd

https://lsyncd.github.io/lsyncd/

操作

lsyncd可以直接在系统源里面找到安装

yum install lsyncd

之后就是配置,lsync 支持

  • default.rsyncssh 通过 rsync ssh 同步两个机器的文件
  • default.direct 本地两个文件夹之间数据同步
  • default.rsync 通过rsync同步两个机器的文件

如果不出意外的话你的配置文件应该在

/etc/lsyncd.conf

这里我推荐使用default.rsync方式去同步文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
settings {
   pidfile = "/var/run/lsyncd.pid",
   nodaemon   = false,
   inotifyMode = "CloseWrite or Modify",
   maxProcesses = 15,
   statusFile = "/var/log/lsyncd/lsyncd.status",
   statusInterval = 10,
   logfile = "/var/log/lsyncd/lsyncd.log"
}

sync {
    default.rsync,
    source    = "/mnt/backup/",
    target = "[email protected]::backup",
    delete="running",
    init = True,
    rsync     = {
        binary = "/usr/bin/rsync",
        archive = true,
        compress = true,
        verbose   = true,
        perms = false,
        group = false,
        owner = false,
        bwlimit   = 99000,
        password_file = "/etc/rsync.password"
        }
    }

讲一下上面的配置吧,其他的模式可以去官网上看

  • pidfile pid文件目录
  • nodaemon 不要使用守护进程
  • inotifyMode 也就是inotify模式,有Modify修改,CloseWrite以可写方式打开的文件被关闭, CloseWrite or Modify三种,推荐使用CloseWrite or Modify
  • maxProcesses 最多的进程
  • statusFile 定期向此文件写入状态报告
  • statusInterval 多少秒写入一次statusFile文件

上面是全局的一些配置,下面是针对一个同步的配置,如果你的服务器中有多个同步的配置,你可以写多个

  • default.rsync 使用rsync
  • source 源
  • target 目的
  • delete 当源中删除文件之后目的目录是不是也要删除文件
  • init 当init = false,只同步进程启动以后发生改动事件的文件,原有的目录即使有差异也不会同步。默认是true
  • rsync 这里都是关于rsync的配置熟悉rsync的应该很熟悉了

其他

当你的文件比较多的时候,尤其是有几十万的小文件你可以修改

vim /usr/lib/systemd/system/lsyncd.service

ExecStart=/usr/bin/lsyncd -nodaemon $LSYNCD_OPTIONS -log all -insist

打开详细的日志来看lsync扫描磁盘中的文件有没有结束

欢迎关注我的博客 www.bboy.app

Have Fun