inotifywait输出始终具有.filepart
问题描述:
我使用inotifywait监视使用WinSCP赋予一个大文件传输文件名:inotifywait输出始终具有.filepart
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输出中文件名的一部分吗?谢谢。
答
您可以使用监视器开关运行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
),则可能会找到解释。
你在'file'或'file.filepart'上寻找'moved_to'吗?因为很显然,它会在'file.filepart'上被'moved_from'。 – Octopus