使用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

欢迎关注我的其它发布渠道