问题 监视文件系统中的事件


我想用Ruby或Python编写一个脚本来查看目录和监视器的内容

1. Any new files
2. Any saves to existing files. 

我并不担心文件中的不同之处 - 只是它们已被保存或是新的。

然后脚本返回文件的名称(带有完整路径),或许每2秒钟一次。

我想扫描文件夹中的文件

mainfile.txt
images/image1.jpg
images/icons/icon1.png

所有这些文件/文件夹都需要进行监控。

我最终想要FTP已经更改/添加的文件,但我很高兴能够解决问题的第一部分,因为我知道如何ftp(但是如果你想要的话,包括这个!)

我使用的是OSX 10.5.8


13075
2018-06-28 08:51


起源



答案:


对于红宝石来说,这是一个可以帮助你的宝石: https://github.com/thibaudgg/rb-fsevent

FSEvent是你想在OS X上使用的系统,这是一个将它带到Ruby的绑定,这个gem被Guard使用,这就是我发现它的方式。 (https://github.com/guard/guard)

您甚至可以考虑使用Guard,它提供了一个很好的api来监视文件/路径并对更改运行操作。

编辑:自从我发布这个新宝石被发布以抽象平台特定的东西: https://github.com/guard/listen ,这个gem提供了一个便携式api来监控多个平台上的文件系统事件


6
2018-06-30 21:13





啊,看FTP。碰巧的是,我为工作建造了这样的东西。虽然我正在处理一些我希望你没有的限制,但是在linux上的部分很容易。 OSX在这个时代就是 大多 重新打包的linux。

所以,你应该能够安装 我看,它使用inotify内核功能。如果你不能使用iwatch本身,这将是非常令人惊讶的,因为它是用perl编写的,那么源代码应该指向你如何直接与inotify通信。 这个链接 有使用python和inotify的东西。

iwatch还有其他一些替代方案,但它们都融入了​​inotify。唯一的另一种选择是在计时器上进行手动目录扫描,这是笨重的,应该避免。我是在Windows上做的,它有......问题。如果我有机会,我将重新制作该部分。


3
2018-06-30 20:30





http://pypi.python.org/pypi/MacFSEvents/0.2.1 http://pypi.python.org/pypi/pyfsevents/0.2b1 http://pypi.python.org/pypi/pyobjc-framework-FSEvents/2.3


2
2018-06-28 08:55





我创建了一个基于的红宝石宝石 守卫 在文件系统事件发生时以类似Dreamweaver的方式将文件同步到ftp。它有点年轻,但我在过去几周一直在使用它没有问题。

它被称为 护ftpsync 我相信它解决了你遇到的确切问题。


2
2018-05-15 13:03





我建议使用专为您所描述的工具设计的工具 - rsync。

rsync将为您完成所有这些工作。它将检查已修改或新的文件,并将它们scp(并通过仅将已更改的文件的块而不是整个文件进行优化)到目标主机。

rsync -a mainfile.txt images/image1.jpg images/icons/icon1.png remotehost:/directory/to/sync/files/to

如果您还想要同步的文件列表,可以通过添加以下内容来调整rsync的日志记录:

-q --log-format="%f"

然而,即使这听起来也不像你所追求的那样。听起来你想要一个快速复制的文件系统,而不是频繁的频繁复制。

复制文件系统将知道即时更改(毕竟你将它们转换到文件系统)并且可以在另一方进行相同的更改。初始设置后,您无需任何工作。这可能是不可能的,你必须更充分地描述这种情况。


1
2018-06-30 19:21