lsyncd基于rsync,且要求rsync >= 3.1
两台服务器A/B均要安装rsync
A需要安装lsyncd,然后把文件推向B。即是A作为源,B作为目标。
有两台CentOS 7服务器,其中A:192.168.1.100文件需要实时同步到B:192.168.1.200
设置密钥登录
#生成密钥文件
ssh-keygen -t rsa
#将公钥拷贝到B
ssh-copy-id username@remote-server
#测试
ssh username@remote-server
安装epel
yum -y install epel-release
安装lsyncd并配置
#安装lsyncd
yum -y install lsyncd
#查看lsyncd版本
lsyncd --version
更改lsyncd.conf配置文件
#vi /etc/lsyncd.conf
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/tmp/lsyncd.status",
insist = true,
statusInterval = 10
}
sync {
default.rsyncssh,
source="/var/log/",
host="192.168.1.200",
targetdir="/tmp/",
delete = false,
rsync = {
archive = true,
compress = false,
whole_file = false
},
ssh = {
port = 22
}
}
lsyncd -nodaemon /etc/lsyncd.conf运行查看下是否有报错.
如果没有报错直接退出后输入命令:systemctl start lsyncd启动lsyncd即可。
## 部分参数说明
settings为全局配置,部分参数如下:
logfile:日志文件路径
statusFile:进程路径
insist:继续运行,即使有失败的目标。
statusInterval:多少秒写入文件,默认是10s
sync为同步配置,部分参数如下:
source:本地文件目录
host:远程服务器地址
targetdir:远程目标目录
port:目前主机SSH端口号,默认为22
## 相关命令
#启动
systemctl start lsyncd
#停止
systemctl stop lsyncd
#重启
systemctl restart lsyncd
#设置开机自动启动
systemctl enable lsyncd
优化:
Increasing the amount of inotify watchers
#添加文件实时监控数量
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
#获取当前的文件实时监控数量值
cat /proc/sys/fs/inotify/max_user_watches
对上述的lsyncd.conf再进行优化,添加限速和保持文件属性一致性
--- compress:压缩文件 perms:保持文件属性一致性 _extra = {"--bwlimit=2000"}对传输限速为2000Kbs。
rsync = {
archive = true,
compress = true,
verbose = true,
perms = true,
whole_file = false,
_extra = {"--bwlimit=2000"}
},
参考:https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers