2015-12-08 45 views
0

我使用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

回答

0

您可以使用監視器開關運行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