下面开始详细讲解配置过程及过程中可能遇到的问题:
现有两台linux主机:
192.168.1.10 //主机器
192.168.1.11 //辅机器
以下操作均在主机器上进行:
安装
apt-get install lsyncd
apt install rsync
查看安装版本
lsyncd -version
创建必要文件夹
mkdir /etc/lsyncd
mkdir /var/log/lsyncd
touch /var/log/lsyncd/lsyncd.{log,status}
配置免密登陆
ssh-keygen -t rsa
ssh-copy-id root@192.168.1.11 //用户名@辅机器的ip地址;执行后需输入辅机器的远程连接密码
ssh root@192.168.1.11 //无需密码即可登陆
配置文件
cd /etc/lsyncd/
vim lsyncd_nginx.lua
配置文件内容:
settings {
logfile = "/var/log/lsyncd/lsyncd.log", --定义日志文件
statusFile = "/var/log/lsyncd/lsyncd.status", --定义状态文件
maxProcesses = 20 -- 同步进程的最大个数。假如同时有20个文件需要同步,而maxProcesses = 8,则最大能看到有8个rysnc进程
}
sync {
default.rsyncssh,
source = "/home/ubuntu/test", --源目录
host = "root@192.168.1.11", --目的主机
targetdir = "/home/ubuntu/test", --远程目录
exclude = { --需要排除的文件或文件夹
"application/config/database.php",
"application/config/mf_config.php",
"application/wxRefundNotifyLog.txt"
},
init = false, --这是一个优化选项,当init = false,只同步进程启动以后发生改动事件的文件,原有的目录即使有差异也不会同步。默认是true
delay = 0, --延时同步的秒数
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true, --压缩传输默认为true。在带宽与cpu负载之间权衡,本地目录同步可以考虑把它设为false
verbose = true
},
ssh = {
port = 22
}
}
保存后执行以下命令重启
/etc/init.d/lsyncd restart
运行lsyncd
lsyncd lsyncd_nginx.lua
查看是否运行
ps -ef |grep lsyncd
root 8058 1 0 13:49 ? 00:00:00 lsyncd lsyncd_nginx.lua
root 8070 7802 0 13:50 pts/2 00:00:00 grep --color=auto lsyncd
最后在主服务器的/home/ubuntu/test下创建一个文件会发现辅服务器上也会有这个文件
问题:
如果未能实现同步,可查看/var/log/lsyncd/lsyncd.log日志文件内容
如果内容中有:ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory
则你需要执行:
sudo apt install ssh-askpass