我想知道是否有最佳做法來檢查上載到您的ftp服務器是否成功。Proftpd驗證完成上傳
我正在使用的系統有一個上傳目錄,其中包含上傳文件的每個用戶的子目錄。
這些目錄中的文件只是臨時性的,它們在處理後會被丟棄。
系統循環遍歷這些子目錄和其中的新文件,併爲每個文件檢查它是否被修改了10秒。如果它在10秒內未被修改,則系統假定文件已成功上傳。
我不喜歡系統當前處理這些情況的方式,因爲它會嘗試處理文件,並在文件上傳不完整時失敗,而不是等待並允許用戶恢復上傳直到完成。 對於上傳時間不長的小文件可能會很好,但如果文件很大,我希望能夠恢復上傳。
我也不喜歡目錄和文件的循環,系統在高cpu使用率下閒置,所以我實現了pyinotify來觸發文件寫入時的動作。我沒有真正看過源代碼,我只能假設它比當前的實現更優化(比我所描述的要多得多)。
但是我仍然需要檢查文件是否成功上傳。
我知道我可以解析xferlog以獲得所有完整的上傳。像:
awk '($12 ~ /^i$/ && $NF ~ /^c$/){print $9}' /var/log/proftpd/xferlog
這將使pyinotify不必要的,因爲我可以得到的路徑,完全和不完全上傳,如果我只尾巴日誌。
所以我的解決方案是檢查我的運行循環中的xferlog,只處理完整的文件。
除非有最佳做法或者只是一個更好的方法來做到這一點?
這種方法的缺點是什麼?
我在debian服務器上運行我的應用程序,proftpd安裝在同一臺服務器上。另外,我無法控制發送文件的客戶端。
python腳本的基本目的是什麼?它是清理用完的文件,在網頁上顯示狀態還是其他的東西? –
現在閱讀,發佈一年後,這個問題似乎還不清楚。基本上我想在上載完成後用上傳的文件做一些事情。但無法找到一種方式來使用proftpd來保證完整的上傳而不阻止FTP REST命令。所以在問題出現的時候,我最終使用iNotify做了一個解決方案,並在寫入時驗證這些文件。 – JayLev