我使用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。而且我不确定为什么move_to事件不在输出中。
/root/p/file.filepart CLOSE_WRITE,CLOSE 2015-12-08 14:56:16
有人可以告诉我应该注意哪些事件,以便.filepart不是inotifywait输出中文件名的一部分吗?感谢。
答案 0 :(得分: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
所以也许这是你正在寻找的那些事件之一。 .part
或.filepart
扩展名是文件传输的正常副作用。我无法解释为什么MOVED_TO
事件没有为您触发,但如果您尝试使用显示器开关(-m
),您可能会找到解释。