如何使用 webdav 从 inotify 获取实名

Posted

技术标签:

【中文标题】如何使用 webdav 从 inotify 获取实名【英文标题】:how to get realname from inotify with webdav 【发布时间】:2013-03-23 11:55:49 【问题描述】:

我有一个 php 脚本来监视 webdav 目录中的新/更改文件。 但是当目录中有任何操作时,inotify 只会返回一个临时名称(.davfs.tmp251671)。不是实际的文件名。

我可以从 inotify 和 webdav 获得真实的文件名吗?

【问题讨论】:

【参考方案1】:

找到了解决方案。 我使用 IN_CREATE(并用于测试 IN_CLOSE)作为触发器 但这给了我上述结果。临时名称.. 所以我使用 IN_ALL_EVENTS 进行测试。 发现掩码 128 给出了文件的实名。 但是... 根据http://www.php.net/manual/en/inotify.constants.php IN_MOVED_FROM = 64 但是在测试 IN_CREATE 时给出了 256 所以在 php 手册网站上显示的顺序是不正确的。 我现在将数值 128 用于 add_watch。它有效!

【讨论】:

遇到了同样的问题。 128 是IN_MOVED_TO,这就是为您提供真实文件名的事件。基本上创建了一个临时目录(IN_CREATE),然后重命名(IS_MOVED_FROMIS_MOVED_TO,两者都使用相同的 cookie)。所以检查两个重命名事件,最后一个给你真名

以上是关于如何使用 webdav 从 inotify 获取实名的主要内容,如果未能解决你的问题,请参考以下文章

RSYNC04-配置rsync+inotify实现实时同步

如何在终端中使用 inotify-tools 获取递归目录路径

如何使用 Inotify 和 libev 在文件夹中获取新添加的文件?

Rsync+inotify备份

如何在功能测试中模拟 INotify 失败?

PowerShell - 使用 WebDAV 下载文件