lsyncd 实时同步(镜像)守护程序
2022/5/10 22:30:25
本文主要是介绍lsyncd 实时同步(镜像)守护程序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
官方文档
https://axkibe.github.io/lsyncd/
https://github.com/axkibe/lsyncd
1.什么是lsyncd
lsyncd是一个文件系统事件监控器,当文件发生变化是会触发lsyncd向目标地址传送变化的数据。
PS:官方解释
Lsyncd使用文件系统事件接口(inotify或fsevents)来监视对本地文件和目录的更改。Lsyncd将这些事件整理几秒钟,然后生成一个或多个进程以将更改同步到远程文件系统。默认同步方法是rsync
Lsyncd是一种轻量级的实时镜像解决方案。Lsyncd相对容易安装,不需要新的文件系统或块设备。Lysncd不会妨碍本地文件系统性能
可以通过配置文件实现细粒度的自定义。自定义操作配置甚至可以从头开始编写,从shell脚本到用Lua语言编写的代码
2.为什么选择lsyncd
1.轻量级监控文件事件变化的应用程序
2.配置简单
3.安装
yum install epel-release yum install lsyncd
4.配置lsyncd
4.1配置参数解释
settings { logfile 日志文件 pidfile pid文件 nodaemon 表示不启用守护模式,默认 statusFile 运行状态文件 statusInterval 将lsyncd的状态写入上面的statusFile的间隔,默认10秒 inotifyMode 指定inotify监控的事件,默认是CloseWrite,还可以是Modify或CloseWrite or Modify maxProcesses 最大进程数 maxDelays 累计多少监控事件同步一次,即使delay时间未到也同步 }
4.2sync的三种工作模式
4.2.1 default.rsync
rsync工作模式,监控文件系统的事件变化 当监控的目录文件事件达到触发值会调用rsync把变化的数据传送到目标目录
rsync命令模式
sync { default.rsync, source = "/tmp/src", target = "172.29.88.223:/tmp/dest", maxDelays = 5, delay = 30, -- init = true, rsync = { binary = "/usr/bin/rsync", archive = true, compress = true, bwlimit = 2000 rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no" } }
rsync daemon模式
sync { default.rsync, source = "/tmp/src", target = "rsync_backup@172.16.1.41::backup", delete="running", exclude = { ".*", ".tmp" }, delay = 3, init = false, rsync = { binary = "/usr/bin/rsync", archive = true, compress = true, verbose = true, password_file = "/etc/rsync.pwd", _extra = {"--bwlimit=200"} } }
4.2.2 default.rsyncssh
rsync+ssh(mv)
监控文件系统事件 当文件系统事件被触发时会向目标传送变化的数据 但mv的命令会被ssh传送到目标服务器执行 并不会先删除再传送
sync { default.rsyncssh, source="/srcdir", host="remotehost", excludeFrom="/etc/lsyncd.exclude", targetdir="/dstdir", rsync = { archive = true, compress = false, whole_file = false }, ssh = { port = 1234 } }
4.2.3 default.direct
本地数据同步模式 数据同步速度要高于default.rsync 数据会在内核态完成同步 原理是调用 rm mv cp 命令来完成数据同步
settings { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd.status", inotifyMode = "CloseWrite", maxProcesses = 8, } sync { default.direct, source = "/xxx/", target = "/xxxxxx/", excludeFrom = "/etc/rsyncd.d/rsync_exclude.lst" }
4.2.4 delete的详解
delete = true #在目标上删除源中没有的内容。在启动时以及在正常操作期间删除的内容 delete = false #不会删除目标上的任何文件。不在启动时也不在正常操作上 delete = 'startup' # Lsyncd将在启动时删除目标上的文件,但不会在正常操作时删除 delete = 'running' # Lsyncd在启动时不会删除目标上的文件,但会删除正常操作期间删除的文件
这篇关于lsyncd 实时同步(镜像)守护程序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享