【问题标题】:Getting File Create Notifications for CIFS Mount in Linux在 Linux 中获取 CIFS 挂载的文件创建通知
【发布时间】:2011-12-28 19:19:15
【问题描述】:
【问题讨论】:
标签:
linux
samba
inotify
cifs
【解决方案1】:
我也一直在解决这个问题并遇到了同样的问题 - 不幸的是,似乎(在谷歌上进行了一些搜索之后)无法在 CIFS 挂载的分区上使用 inotify - 以下是在 redhat 论坛中几年前的帖子:
“目前,不,这对于 CIFS 是不可能的。VFS 挂钩允许
最近删除了用于设置额外通知的文件系统。这
他们中唯一的“用户”是 CIFS,而且它从来没有正常工作过。这
这个内核接口也有严重的问题。
我认为史蒂夫有计划重新实现它,但这是一个重大项目
这意味着向内核的 VFS 层添加新功能。”
虽然这是几年前的事了,但我们似乎距离提供这个设施还很近 - 可惜,我也可以真正使用它!
【解决方案2】:
我也遇到了这个问题,得出了与 Stephen Sullivan 相同的结论(CIFS + inotify = 不行)。
但是,由于我的工作流程碰巧依赖于远程挂载和依赖 inotify 的自动编译工具,所以我最终构建了一个(相当绝望和 hacky)解决方案,它基本上只是使用轮询来监视更改,然后触及同样的文件再次出现在挂载端,确实似乎触发了 inotify 事件。这不是我最自豪的时刻。
话虽如此,它确实有效,所以,享受吧:http://github.com/rubyruy/watchntouch
【解决方案3】:
可以做到..有点
如果您设置了 webdav 服务器并将共享包含为 webdav 位置,则可以在您的 samba 服务器上监控该位置,同时通过 webdav 从您的 Windows 机器访问它。
最大的问题是文件权限是个混蛋……就像 apache2 webdav 一样,因为它缺少传递身份验证
【解决方案5】:
老话题,依然重要!
我对此的回答是:“这取决于!”。
从我此时的经验测试来看,这种行为非常清楚。如果 Linux 主机 [在 CIFS 挂载时] 启动文件系统事件,则 inotify 会正常看到它。如果托管 CIFS 挂载的 Windows 机器启动文件系统事件,则 inotify [在 Linux 机器上] 将根本看不到它。
如果您的目标是让 Linux 主机收到有关 Windows 主机创建或写入文件的通知,那么您就不走运了。由于这可能是该机制最理想的用途,它确实使这个微妙的“取决于”答案不是那么有用!