2012-04-08 64 views
2

我正在編寫一個腳本,在完成同步後,將文件移出Dropbox中的某個文件夾。Python,Ubuntu:Dropbox完成時引發事件同步?

例如,我想要一個名爲「TrashBackup」的文件夾,只要我將東西放在那裏,(我的服務器完成同步後),我的服務器將其拾取並將其從Dropbox移出到文件系統的另一個位置(最終從筆記本電腦中刪除它)。

我正在使用pyinotify,但問題是我不知道如何知道它何時完成同步。在可能真正大的文件沒有完成傳輸之前,我可能會最終移動。

我正在考慮設置一個計時器,以查看文件最後一次更改的時間,如果超過20分鐘,然後繼續將其移出Dropbox。但它看起來像一個假象。另外,如果我正在傳輸1GB文件,我可能會推動我的運氣,取決於Dropbox的速度和本地帶寬利用率。

也許我應該開始監視.dropbox.cache文件夾?有任何想法嗎?

+0

如何使用Dropbox API? – Acorn 2012-04-08 19:10:08

回答

2

爲什麼不嘗試使用Dropbox CLI?那裏有幾種方法可以證明對你有用。

爲了實現您的特定目標,我可以考慮兩個有用的命令:dropbox statusdropbox filestatus。同步完成後,前者將返回「空閒」。後者返回一個或多個文件的同步狀態。

+0

我認爲它會工作,謝謝! (我會檢查它是否在事件結束後處於空閒狀態,如果是,我將移動這些文件)我會等待先看看是否有其他方法 – Andre 2012-04-08 19:40:00

+0

好極了!我會考慮根據'filestatus'方法在'dropbox.py'內創建一個新方法。這樣,您可以涵蓋所有可能的情況(例如,該目錄不存在或Dropbox未運行)。然後,你可以通過調用'python dropbox.py trashbackup

'來「垃圾備份」。讓我知道事情的後續! – 2012-04-08 19:57:20

0

您可以使用API​​(特別是/ metadata:https://www.dropbox.com/developers/reference/api#metadata)偶爾輪詢該文件夾(例如,每5-10分鐘)以查看是否有新內容,如果有,請根據需要執行移動。在這種情況下,API的優點是該文件只有在完成同步後纔會顯示。 (建議不要監測.dropbox.cache。)