##如果想要将服务端的数据同步到客服端,服务端必须拥有免密码登录客服端的权限,可以设置密钥登录来完成。只需要两条命令即可,下面的命令在服务端服务器执行:
#生成密钥文件
ssh-keygen -t rsa
#将公钥拷贝到客服端
ssh-copy-id root@客服端ip
#测试
ssh root@客服端ip
##如果客服端不是使用的22作为SSH端口,需要-p参数指定端口号
#安装epel源
yum -y install epel-release
#安装lsyncd
yum -y install lsyncd
#查看lsyncd版本
lsyncd --version
######################################################################
#vi /etc/lsyncd.conf修改配置文件,注释或删除掉默认的最后一行,然后添加自己的配置。
----
-- User configuration file for lsyncd.
--
-- Simple example for default rsync, but executing moves through on the target.
--
-- For more examples, see /usr/share/doc/lsyncd*/examples/
--
-- sync{default.rsyncssh, source="/var/www/html", host="localhost", targetdir="/tmp/htmlcopy/"}
--
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status",
maxProcesses = 1
}
sync {
default.rsyncssh,
source = "/usr/local/nginx.application",
host = "192.168.1.1",
targetdir = "/home/nginx.application",
init = false,
delay = 0,
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
verbose = true
},
ssh = {
port = 22000
}
}
sync {
default.rsync,
source = "/usr/local/nginx.application",
target = "/home/nginx.application",
-- excludeFrom = "/etc/rsyncd.d/rsync_exclude.lst",
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
verbose = true
}
}
部分参数说明
settings为全局配置,部分参数如下:
ogfile 定义日志文件
stausFile 定义状态文件
nodaemon=true 表示不启用守护模式,默认
statusInterval 将lsyncd的状态写入上面的statusFile的间隔,默认10秒
inotifyMode 指定inotify监控的事件,默认是CloseWrite,还可以是Modify或CloseWrite or Modify
maxProcesses 同步进程的最大个数。假如同时有20个文件需要同步,而maxProcesses = 8,则最大能看到有8个rysnc进程
maxDelays 累计到多少所监控的事件激活一次同步,即使后面的delay延迟时间还未到
sync为同步配置,部分参数如下:
lsyncd以什么模式运行:rsync、rsyncssh、direct三种模式:
default.rsync :本地目录间同步,使用rsync,也可以达到使用ssh形式的远程rsync效果,或daemon方式连接远程rsyncd进程;
default.direct :本地目录间同步,使用cp、rm等命令完成差异文件备份;
default.rsyncssh :同步到远程主机目录,rsync的ssh模式,需要使用key来认证
nit 这是一个优化选项,当init = false,只同步进程启动以后发生改动事件的文件,原有的目录即使有差异也不会同步。默认是true
delay 累计事件,等待rsync同步延时时间,默认15秒(最大累计到1000个不可合并的事件)。也就是15s内监控目录下发生的改动,会累积到一次rsync同步,避免过于频繁的同步。(可合并的意思是,15s内两次修改了同一文件,最后只同步最新的文件)
delete 为了保持target与souce完全同步,Lsyncd默认会delete = true来允许同步删除。它除了false,还有startup、running值,
compress 压缩传输默认为true。在带宽与cpu负载之间权衡,本地目录同步可以考虑把它设为false
source:本地文件目录
host:远程服务器地址
targetdir:远程目标目录
port:目前主机SSH端口号,默认为22
继续输入命令lsyncd -nodaemon /etc/lsyncd.conf运行查看下是否有报错,如果有报错根据报错情况检查修改,如果没有报错直接退出后输入命令:systemctl start lsyncd启动lsyncd即可。
#启动lsyncd
lsyncd /etc/lsyncd.conf
从同步文件误删或被改,主同步关闭lsyncd,重启之后就恢复,因为已经被写死,重启之后全部跟主同步一样
killall lsyncd
systemctl start lsyncd.service
#查看lsyncd服务进程
ps -ef | grep lsyncd
同步的文件一定不能有执行权限全部改成chmod 644 ./*
不改免密会失效
新加节点要覆盖一次主同步,