简介
作为运维肯定有文件同步的需求,比如高可用的两台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
方式去同步文件
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 = "rsyncuser@1.1.1.1::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