centos7上搭建lsyncd服务
标签:centos, lsyncd三年前研究多台服务器上的文件同步用的是“unison+inotify”的方案(https://www.zhuangyan.cn/centos6-rsync/),现在又有的文件同步的需要,研究一下新的技术.发现lsyncd是很好的开源方案,所以在centos7上部署了一下.
简介
Lysncd 实际上是lua语言封装了 inotify 和 rsync 工具,采用了 Linux 内核(2.6.13 及以后)里的 inotify 触发机制,然后通过rsync去差异同步,达到实时的效果。我认为它最令人称道的特性是,完美解决了 inotify + rsync海量文件同步带来的文件频繁发送文件列表的问题 —— 通过时间延迟或累计触发事件次数实现。另外,它的配置方式很简单,lua本身就是一种配置语言,可读性非常强。lsyncd也有多种工作模式可以选择,本地目录cp,本地目录rsync,远程目录rsyncssh。实现简单高效的本地目录同步备份(网络存储挂载也当作本地目录),一个命令搞定。源码地址是:https://github.com/axkibe/lsyncd.
安装
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum -y install lsyncd rsync
配置文件
/etc/lsyncd.conf
settings {
insist = true,
logfile ="/usr/local/lsyncd/logs/lsyncd.log",
statusFile ="/usr/local/lsyncd/logs/lsyncd.status",
inotifyMode = "CloseWrite or Modify",
maxProcesses = 15,
}
sync {
default.rsync,
source = "/home/callrobot/www/stores/_upload/wavs/",
target = "/home/freeswitch/sounds/formal/",
delete="running",
delay = 0,
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
verbose = true
}
}
目录/usr/local/lsyncd/logs需要手动创建
一般第一个参数指定lsyncd以什么模式运行:rsync、rsyncssh、direct三种模式:
- default.rsync :本地目录间同步,使用rsync,也可以达到使用ssh形式的远程rsync效果,或daemon方式连接远程rsyncd进程;
- default.direct :本地目录间同步,使用cp、rm等命令完成差异文件备份;
- default.rsyncssh :同步到远程主机目录,rsync的ssh模式,需要使用key来认证
## 服务管理
systemctl start lsyncd.service
systemctl stop lsyncd.service
systemctl status lsyncd.service
systemctl enable lsyncd.service
Written on 2019-03-15
上篇:
Lodash学习
下篇:
令人惊叹的bjoern