问题标签 [lsyncd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rust-cargo - Cargo 究竟如何检测文件更改?
tl;dr:我想知道cargo
使用什么来确定文件是否已更改以调试我在构建系统设置中观察到的问题。
描述
我目前已经lsyncd
设置将项目文件镜像到远程 linux 机器上,我通过ENVVARS_HERE=$my_values cargo build
. lsyncd
不幸的是,使用rsync
w/archive flag
似乎没有复制cargo
用于确定文件是否已被编辑的任何属性:
我设置了一个工作区:
crateB
取决于crateA
. _ 此后,“远程机器”指的cargo
是被调用的机器,“本地机器”指的是编辑代码lsyncd
然后传递到“远程机器”的机器。我将使用“最近”来指代所描述的动作的依赖关系相对于以我知道的方式描述的状态没有改变的任何时间。
情况A
初始状态:
- 工作空间已从本地机器复制到远程机器
lsyncd
没有在本地机器上运行crateB
最近cargo build
在远程机器上编译
履行:
crateB
在远程机器上编辑源文件cargo build
在远程机器上调用
结果:
crateB
cargo
在远程机器上重新编译
情况乙
初始状态:
- 工作空间已从本地机器复制到远程机器
lsyncd
正在本地计算机上运行(请参阅下面有关配置的注释)crateB
最近已cargo build
在远程计算机上编译(请参阅有关与lsyncd
的操作模式相关的时间的注释)
履行:
crateB
在本地机器上编辑文件- 等待同步触发并完成
cargo build
在远程机器上调用
结果:
crateA
在远程机器上编译,然后crateB
笔记
lsyncd
在有和没有archive = true
的情况下运行(据我所知,它设置了 rsync 的archive
标志来复制“大多数”元数据,其中“大多数”似乎错过了它cargo
关心的任何内容),结果没有观察到变化。- 对存在的初始状态的编译针对
lsyncd
以下情况进行了测试,结果没有观察到变化:在初始阶段之前的编译和在初始阶段 之后的lsyncd
编译lsyncd
lsyncd
远程机器上的目标目录位于tmpfs
文件系统上(如果这会产生一些神秘的差异)
问题
我想要一种方法来弄清楚这里发生了什么,无论是在这种情况下lsyncd
还是将来如果/当我放弃lsyncd
其他一些偶然发现类似问题的方法时。关于cargo
例如 SO 的来源参考了时间戳的使用,但是时间戳有很多种,它们所指的时间戳是不清楚的。
在确定文件是否已更改时,究竟检查什么?cargo
linux - lsyncd - 事件队列中的溢出 - 解决方案是调整 fs.inotify.max_queued_events
lsyncd 是 NFS 或 NAS 的绝佳替代品,用于在 Linux 主机之间复制文件。我发现该守护程序适用于大型 Linux 文件系统(许多文件,从小到大,xfs,ext4,luks),但随着文件系统的增长,需要一些 sysctl 调整。
这个“问题”是给我自己的一个注释,所以我总是可以通过搜索堆栈溢出来找到答案。希望对你有帮助!
Github 项目:https ://github.com/axkibe/lsyncd
/var/log/lsyncd.log 中的异常:
pycharm - 现在强制 lsyncd 到 sybc
我正在使用 lsyncd 将本地开发目录结构镜像到远程服务器。我正在本地编辑文件(使用 pycharm),并在完成给定更改后等待它们被推送到服务器。
有没有办法通过命令行强制 lsyncd 守护程序现在执行同步,而不是等待它的延迟期结束?
谢谢
rsync - lsyncd 中的动态排除列表
我们的云平台由 opennebula 提供支持。所以我们在“冷交换”中有两个前端实例。我们使用 lsyncd 守护进程试图保持数据存储中的实例同步,但有几点:我们不想同步 VM 的镜像,.bak
因为其他脚本会.bak
按计划将所有镜像移动到其他存储。find all the .bak in /var/lib/one/datastores/ then create exclude.lst and then start lsyncd.
在我们查看数据存储之前,同步脚本逻辑看起来还不错:
..等等。
我们用这个可怕的函数解决了它:
结果是包含 VM ID 和.bak
内部图像的列表,因此我们可以将整个 VM 文件夹排除在同步之外。这不是我们想要的,因为原始图像保持不同步。但是可以通过在其他脚本将所有内容移动.bak
到其他存储时重新启动 lsyncd 脚本来解决。
现在我们进入问题的主题。
它一直有效,直到.bak
创建新的遗嘱。没有办法在 exclude.lst “on the go”中添加新字符串,而是停止 lsync 并重新启动重新创建 exclude.lst 的脚本。但是也没有可能检查创建新 .bak 的时刻,除非另一个脚本会在一段时间内对其进行监控。
我相信存在不太复杂的解决方案。当然,这取决于 opennebula,尤其是 /datastores/ 文件夹存储 VM 的方式。
lsyncd - lsyncd 由于未设置“坚持”而终止
我安装了 Lsyncd 2.2.2 版来在两台 Centos 7 服务器之间进行同步。当我启动它时,一切正常,文件根据需要同步。但三分钟后他停了下来。使用 ssh 密钥建立连接。这是我在日志中的内容:
Wed Mar 24 23:41:46 2021 Normal: --- Startup --- Wed Mar 24 23:43:14 2021 Normal: recursive startup rsync: /home/ -> root@10.1.0.1:/home/ Wed Mar 24 23:43:14 2021 Normal: recursive startup rsync: /var/cpanel/datastore/ -> 10.1.0.1:/var/cpanel/datastore/ Wed Mar 24 23:43:14 2021 Normal: recursive startup rsync: /var/cpanel/databases/ -> 10.1.0.1:/var/cpanel/databases/ Wed Mar 24 23:43:15 2021 Normal: Startup of /var/cpanel/datastore/ -> 10.1.0.1:/var/cpanel/datastore/ finished. Wed Mar 24 23:43:15 2021 Normal: Startup of /var/cpanel/databases/ -> 10.1.0.1:/var/cpanel/databases/ finished. Wed Mar 24 23:44:24 2021 Error: Temporary or permanent failure on startup of /home/ -> root@10.1.0.1:/home/. Terminating since "insist" is not set.
非常感谢您
linux - Minikube 挂载:错误的文件描述符
当我在 Minikube 中挂载目录并列出该目录时,出现以下错误:
这是问题,因为当我将此目录挂载到我的 pod 中时,lsyncd
服务会将其复制到分发文件夹中。lsyncd
不知道如何处理没有适当描述符的文件。
我在启动 Minikube 后挂载了卷,例如:
如何挂载目录并传输在本地计算机上列出目录时出现的正常文件描述符?这些是它们的样子:
附加说明:我使用的是 System 76 的 Pop OS,它是 Ubuntu 20 的一个分支,我的 Minikube VM 在 Virtual Box 上运行 Ubuntu 20。
谢谢。
spring-boot - Spring Boot 微服务和 lsyncd 文件确认
目前我有一个标准的微服务(X),它将文件写入目标文件夹,由 lsyncd 拾取以在另一台服务器中复制。X 还调用另一个微服务 (Y),该微服务读取已由 lsyncd 在其自己的本地文件夹中复制的文件。
我现在面临的问题是服务器1到2的lsyncd传播时间,到Y读取文件时,lsyncd还没有完成文件传输。我已经确定它是 lsyncd 传播太慢(配置延迟 = 0),因为当我通过 X 中的 Thread.Sleep 引入 1000 毫秒延迟时,Y 能够成功获取文件。
我是否可以知道我的实现的 JVM 端是否有办法从 lsyncd 接收某种形式的确认?
unix - 运行 Centos 的 Unix 服务器上的 lsyncd 出现问题
我正在尝试在运行 Centos 的 Unix 服务器上设置一个简单的 lsyncd 示例。我正在关注这篇文章。 https://www.unixmen.com/how-to-sync-files-with-lsyncd/
我确定我已正确按照说明进行操作,但它既不同步也不记录。谁能帮我解决这个问题?谢谢。
unix - lsyncd 包含特定文件 排除其余文件
我正在使用 lsyncd 2.2.2 版。这是我当前的代码。
设置{
日志文件 = "/etc/lsyncd.log",
statusFile = "/etc/lsyncd.status",
坚持=真,
}
同步 {
默认.rsyncssh,
source = "/home/abc/public_html/course/testcgi/adminfiles",
主机=“xxx.xx.xxx.xxx,
targetdir = "/home/abc/public_html/course/testcgi/adminfiles",
延迟 = 0,
排除 = { '*' },
rsync = {
烫发=真,
所有者=真,
}
}
由于代码位于上方,它将并且确实排除了所有文件。现在我想包含特定的文件名。我努力了
包括 = { '*' }
包含来源 = { '*' }
但两者都不起作用。
这不可能吗?
谢谢。