將文件從machine1/dir1複製到machine2/dir2。我在dir2上添加了一個inotify監視器,用於創建任何新文件。現在如果文件很大,可能需要幾秒鐘才能完全在新機器上。如果我沒有錯,Inotify會在檢測到事件後立即通知應用程序。所以如果文件狀態必須被檢查,應該怎麼做?inotify:如何在傳輸完成後通知目錄中的新文件?
回答
如果IN_CLOSE_WRITE只有一臺機器上的scp,否則,這取決於文件從一臺機器上傳到另一臺機器的方式。如果一次打開和關閉,IN_CLOSE_WRITE就是實現它的方法。
上述兩個答案都有意義,這取決於我們如何做到這一點。
無法回答此問題,因爲它取決於應用程序環境和要求。它可能會看到文件未被修改60秒。它可能需要每隔幾秒檢查一次。這取決於。
保存帶有臨時文件名(或其他目錄)的下載文件,並在文件成功移動時將其重命名爲預期的文件名。
例如Nginx使用此方法來存儲緩存的數據 緩存數據首先被寫入臨時文件,然後將其移動到緩存目錄中的最終位置。廉價和原子重命名系統調用執行,而不是完整的文件副本因此,最好在兩個位置使用相同的文件系統
這是要走的路。沒有辦法找出文件是否仍在寫入 - 你可以做的最好的事情是找出是否有其他程序打開了這個文件,但這是一個很大的努力(它需要枚舉所有已打開的文件進程),需要root權限,並且在有相同想法的其他程序(例如病毒掃描程序)周圍時很難正確使用。 –
最簡單的方法是使用'rsync'進行復制。 –
rsync完全一樣,我的意思是它創建臨時文件並重命名它比 – hostmaster
- 1. 完成目錄刪除後的通知
- 2. 上傳完成後如何從目錄中刪除文件?
- 3. 通知回調時iTunes同步/文件傳輸完成
- 4. 將ssh/rsync傳輸到遠程目標後,目標計算機在傳輸完成後如何才能知道新文件?
- 5. 將文件移動到另一個目錄完成傳輸
- 6. 爲了通知該文件上傳完成,輸入文件按鈕的Javascript
- 7. 讓PHP等到一個文件完成傳輸後再傳輸
- 8. PHP輸出完成通知
- 9. 完成目錄更新後Poedit崩潰
- 10. Excel文件目錄傳輸
- 11. Android完成傳出呼叫後如何刪除通話記錄
- 12. 如何通過網絡傳輸大文件/目錄使用AsyncSocket
- 13. 在目錄中創建文件的日誌,可能使用inotify
- 14. 如何延遲完成位傳輸直到傳輸完成?
- 15. inotify獲取目錄
- 16. 誰在完成後通知線程?
- 17. 在繁忙的目錄中使用inotify
- 18. 如何在完成上傳後刪除雜項臨時文件?
- 19. 查詢完成後的SQL Server通知?
- 20. 如何在glTexImage2D完成上傳時得到通知?
- 21. 留意上完成文件傳輸
- 22. 爲什麼在文件傳輸完成後,我的列表視圖條目的內容沒有更新?
- 23. 如何讓TWindowsMediaPlayer在完成舊曲目後播放新曲目?
- 24. 在Play框架中完成文件下載時的通知
- 25. 成功構建完成後如何獲取通知?
- 26. 完成後通知腳本文件複製
- 27. 通知完成後打開下載文件
- 28. 如何留在子shell完成後的目錄?
- 29. 如何在服務完成後通知主要活動?
- 30. 如何在完成任務後從intentservice獲取通知?
您是否嘗試使用IN_CLOSE_WRITE inotify事件?如果傳輸應用程序沒有打開並關閉收到的每個數據包的文件,它可能會工作。 –
IN_CLOSE_WRITE是一個不錯的選擇。將退房。 – King