您现在的位置是:首页 >学无止境 >lsyncd技术使linux服务器上的项目实现同步网站首页学无止境
lsyncd技术使linux服务器上的项目实现同步
简介【代码】debain使用lsyncd技术使linux服务器上的项目实现同步。
**下面开始详细讲解配置过程及过程中可能遇到的问题:
现有两台linux主机:**
192.168.1.101 //主机器
192.168.1.102 //辅机器
以下操作均在主机器上进行:
安装lsyncd和rsync
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.102 //用户名@辅机器的ip地址;执行后需输入辅机器的远程连接密码
ssh root@192.168.1.102 //无需密码即可登陆**
端口默认不是22的话使用以下命令
ssh-copy-id -i /root/.ssh/id_rsa.pub -p 20009 root@192.168.1.102//-p为端口
配置文件
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 8018 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
备注:同步需要在所有服务器都要安装环境,主服务器是进行配置,编写lua脚本进行同步,此外可以此可以配置多台服务器进行文件同步,设置同步方式有多种,可以自行查询详细参数。
梦想加空间!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。