使用 incrontab mv 文件生成 0 字节文件

Using incrontab mv file results in 0 byte file

我正在使用 incrontab 和 incrontab -e 编辑器中的命令查看文件夹:

/media/pi/VDRIVE IN_CLOSE_WRITE sudo mv $@/$# /media/pi/VDRIVE/ready/$#

监视的文件夹正在通过网络从另一台机器上释放文件——文件显示正常并且似乎在复制过程关闭文件后触发了 incrontab 作业,但 mv 命令导致 0 字节目标文件夹中具有正确名称的文件。

全部 运行 作为 root。

OSX 上的 Samba 似乎有一个错误,导致在写入网络上的共享文件夹时出现两个事件。这使得 incrontab 在使用 OSX 计算机(较新的 OS 10.7 up)时非常不可行。 所以当 OSX 将文件写入 Linux samba 共享时,有两个事件,第一个事件在文件实际写入完成之前触发 mv 动作。这是 OSXs SAMBA 实现中的错误。

最后我使用 inotify 将事件写入日志文件(其中总是有两个),然后在执行操作之前扫描文件中的两个事件实例。

另一种策略是在 cron 例程上使用 LSOF,它将忽略任何打开以进行写入的文件。