我很想知道如何在Java中編寫一個可以自動同步文件(桌面,筆記本,智能手機)的文件的應用程序。與Dropbox類似,但沒有第三方服務器,因爲我擁有自己的服務器。文件/目錄同步算法
通過網絡搜索我還沒有找到任何有用的話題談論這些程序中使用的同步算法。考慮到這個問題與版本控制相似,我想這不是一個容易的主題。因爲我想放鬆它。例如。我還沒有(現在)希望在數據傳輸中實現文件更改的優化,所以如果它改變了,我就可以傳輸整個文件。如果系統要求我在不同文件版本之間手動解決衝突,那麼對我來說也很好。
我最大的問題是網絡通信。從機客戶端應該如何詢問/告訴我的中央存儲服務器文件更改?我想定期傳輸帶有元數據的整個文件列表到服務器並不是一個好主意。據我看到,Dropbox在啓動時檢查整個共享文件夾,然後以某種方式注意到本地文件系統上的更改(我知道有一種方法可以監聽操作系統中的文件系統更改事件,例如,Java7擁有WatchService
類)收聽網絡同步事件。我是否應該維護像版本控制系統這樣的文件修訂版或者是否有其他解決方案?
是否有任何關於此主題的書籍或在線資料?
鑑於SVN _stores_ deltas,我會想象它將它們轉移。 –
嗯,我正在與SVN很多,所以也許這將是最好的選擇。但是我擔心我理解SVN的內部機制有點矯枉過正。我會試一試。我不知道SVNKit是SVN的純Java實現,我認爲它只是本地二進制文件的包裝。 rsync不是例如。 Android系統。它也是用C編寫的,我在C語言中不太流利,很好地理解每一點。 – NagyI
@ X-Zero,你是對的。它確實根據SVN書籍轉移增量。我不確定,因爲它似乎比Git慢得多:-P。 –