疫情在家无事,想搞一个实时、双向、多机器的远程文件同步,web镜像的方案。翻来覆去最终选择优秀的开源远程目录同步工具lsyncd。
lsyncd 是一个支持实时、双向、多机器的多模式文件同步工具。
Lsyncd使用文件系统事件接口(inotify或fsevents)来监视本地文件和目录的更改。Lsyncd整理这些事件几秒钟,然后生成一个或多个进程以将更改同步到远程文件系统。默认的同步方法是rsync。因此,Lsyncd是一种轻型的实时镜像解决方案。Lsyncd相对易于安装,并且不需要新的文件系统或块设备。Lysncd不会妨碍本地文件系统的性能。
Lysncd 实际上是lua语言封装了 inotify 和 rsync 工具,采用了 Linux 内核(2.6.13 及以后)里的 inotify 触发机制,然后通过rsync去差异同步,达到实时的效果。完美解决了 inotify + rsync
海量文件同步带来的文件频繁发送文件列表的问题,通过时间延迟或累计触发事件次数实现。另外,它的配置方式很简单,lua本身就是一种配置语言,可读性非常强。简单,强大和灵活的配置,使用lua编程可以编写定制自己的逻辑,充满无限可能。Lua真是很强大呀。
作为rsync的替代方法,Lsyncd还可以通过rsync + ssh推送更改。当文件或目录被重命名或移动到本地树中的新位置时,Rsync + ssh允许更高效的同步。(相反,普通rsync通过删除旧文件然后重新传输整个文件来执行移动。)
下面直接开始安装部署来实验一下,系统centos7.7 直接通过yum安装:
1. 先安装epel源:
yum install epel-release
2. 然后安装lsyncd:
yum install lsyncd
安装完成后验证一下是否能进行远程实时目录文件同步,简单验证一下,就不用写配置文件了,直接命令行模式
源主机: 192.168.50.44
目标主机: 192.168.50.81
1. 创建目录 /www
mkdir -p /www
2. 启动lsyncd
lsyncd -nodaemon -rsyncssh /www root@192.168.50.81 /www
-nodeamon 前台模式,日志输出到控制台,调试测试时候使用,用来观察程序行为。
-rsyncssh 使用ssh命令在目标上本地移动目录和文件,
lsyncd有三种模式: rsync,rsyncssh和direct,默认的是rsync。
/www 表示监控本地/www目录文件变化
root@192.168.50.81 目标主机ssh链接地址
/qyyt 表示目标主机上的目录,将源主机上的/www目录下的内容同步到目标主机上的 /qyyt 目录中,
如果/qyyt 目录不存在,会自动创建。
image.png
同步时候会要求输入目标主机密码,后期会配置ssh免密登录,测试时候就不要考虑这个啦。最后一条输出表示,启动成功,已经开始监控/www 目录了
下面创建文件和目录,看看是否能实时同步到目标主机上去。
这个只是用来测试安装是否成功,以及lsyncd是否能正常使用,正式环境还是要使用配置文件模式来进行的。
下期详细讲解 lsyncd的配置文件
个人用户或小企业用户,建站后没有运维怎么办?
旗鱼云梯, 专业的SAAS化服务器集群管理云平台, 免费的运维服务专业的技术, 您值得的拥有.
by 旗鱼云梯
网友评论