inotifywait输出始终具有.filepart

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输出中文件名的一部分吗?谢谢。

+0

你在'file'或'file.filepart'上寻找'moved_to'吗?因为很显然,它会在'file.filepart'上被'moved_from'。 – Octopus

您可以使用监视器开关运行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),则可能会找到解释。

+0

即使最后一个事件在文件名中也有.filepart。 – jlp

+0

@jlp,在OP中你只能专门观看两个事件。你是说你用'-m'完成了这个吗? “* .filepart”是否进入tmp文件夹,然后移动到另一个文件夹? – Octopus

+0

是的,我已经完成了-m,并且我看到* .filepart一直到事件“CLOSE”。没有,.filepart没有进入tmp文件夹,它在日志中显示了正确的文件夹,但是.filepart本身没有出现在任何文件夹中。传输完成后,该文件夹具有正确的文件,文件名中没有.filepart。 – jlp