1

我正在使用 inotifywait 来监视使用 WinScp 的大型文件传输:

  inotifywait --event close_write --event moved_to --format '%w%f %e %T' 
     --timefmt '%F %T' $watchFolder |  while read eventOutputInfo do
     echo "eventOutputInfo is:" $eventOutputInfo

但它总是在最后打印出带有 .filepart 的文件名。在目标目录下,传输完成后,它具有正确的文件名,但没有 .filepart。而且我不确定为什么事件moved_to不在输出中。

   /root/p/file.filepart CLOSE_WRITE,CLOSE 2015-12-08 14:56:16

有人可以让我知道我应该注意什么事件,以便 .filepart 不是 inotifywait 输出中文件名的一部分吗?谢谢。

4

1 回答 1

1

您可以inotifywait使用监视器开关运行以观察文件传输的整个生命周期中发生的情况,以了解触​​发了哪些事件。为了我:

inotifywait -m .

当我通过 Dolphin 文件管理器复制文件时产生以下输出:

./ CREATE filename.part
./ OPEN filename.part
./ MODIFY filename.part
./ MODIFY filename.part
./ MODIFY filename.part

... repeated many times ...

./ MODIFY filename.part
./ MODIFY filename.part
./ MODIFY filename.part
./ CLOSE_WRITE,CLOSE filename.part
./ MOVED_FROM filename.part
./ MOVED_TO filename
./ ATTRIB filename
./ ATTRIB filename
./ OPEN,ISDIR 
./ CLOSE_NOWRITE,CLOSE,ISDIR 
./ OPEN,ISDIR 
./ CLOSE_NOWRITE,CLOSE,ISDIR 

所以也许这是您正在寻找的那些事件之一。.partor扩展名是文件传输的.filepart正常副作用。我不能说为什么该MOVED_TO事件没有为您触发,但如果您尝试使用监视器开关 ( -m),您可能会找到解释。

于 2015-12-08T20:36:43.517 回答