Dropbox 等雲存儲產品如何處理文件衝突的問題?

比如同時在多個設備上修改了某個文件後聯網進行同步, 此時是怎樣處理的?


多個設備上修改了某個文件,然後聯網同步,那麼先同步的會成為文件的新版本,而所有後同步的會被複制一份,文件名里加上conflicted copy字樣和哪台機器修改的還有衝突發生的時間。

這是同步軟體能做的極限了,因為管理的都是二進位文件而非Git那樣管理的是純文本,所以沒法進行三方合併,所以只能由你自己做合併。

你可以完全信任Dropbox,他不會丟失任何衝突的文件。

參考: https://www.dropbox.com/help/36


這個問題涉及到同步的邏輯問題

說這個問題之前得定義「衝突」,什麼叫衝突?根據目前國內外同類產品的情況和我們的經驗,衝突的定義在於在某文件上傳過程中(開始到完成),在其他終端發生再次上傳,那麼稱之為「衝突」。

如何處理衝突問題呢?通常有兩種:

1.簡單的,即直接覆蓋,但提供歷史版本恢復的功能;這個比較簡單,也容易處理,不好的在於一般用戶不太知道歷史版本的概念,多人操作互不知情的情況下會認為文件丟失了或者被篡改了,且你同時需要此文件的幾個版本的時候會比較麻煩。

2.另外一種也就是目前很多產品採用的,重命名的方法,只要一個文件再上傳過程中(開始到完成)再發生上傳請求,那麼後一個版本則進行重命名(比如文件名後面加上數字1或者文字解釋),這樣的好處在於非常直觀,尤其是在雙方都不知情的情況下,都能找到自己需要的版本。

以上說的都是一些比較簡單的應用場景,雲存儲產品的邏輯是比較複雜的,尤其是多終端情況下的不同請求。


網盤文件發生衝突主要是由以下幾種原因導致的:

  • 多名用戶同時修改了同一個文件
  • 同步應用程序自動生成文件時(例如 QQ 聊天記錄、軟體配置文件等),如果多個電腦同時運行該應用程序,則很容易產生衝突
  • 同時在多個設備上修改了同一個文件

目前各個產品對於衝突文件的主要處理方式是:保留最先同步的文件,然後將後保留的文件自動重命名(據我所知 Dropbox 和國內的堅果雲都是這樣做的),此處借一下 @堅果雲 的圖

這種方法的好處在於只要你的文件是處於同步狀態的,就不會丟失,每一個版本都會幫你保存下來,幾乎是雲存儲產品能夠做到的極致了。至於之後要保存哪一個版本,需要你自己來判斷手動刪除


onedrive 是都保存的,然後彈窗詢問用戶~~

前幾天遇到了。

自己在兩台電腦都編輯過同一個版本的文件,然後就彈了窗,可以選擇保留其中的某一個或者全部~~


我覺得沒有版本的概念,只有覆蓋。一個文件在a狀態下,被不同的人改了,上傳,這個文件的狀態就是最後上傳的那個時候的狀態。

-----以上是我猜測的-----

沒想到dropbox和我想的相反,最先上傳的作為最終的版本,以後都作為備份寸下來。

它這樣是比較好的保證了不丟東西,但複雜化。如果有好的提示,還是很不錯的。

我的想法是簡化功能,保持功能單一,但丟東西,這個對於備份軟體來說,比較致命。

另外,發現DropBox支持previous versions功能


推薦閱讀:

iPhone 用戶該如何正確使用 iCloud?
請教iCloud問題?
把重要文檔存在 iCloud 安全嗎?
為什麼一部分 iOS 應用刪除重裝之後舊的數據還在?
為何 Apple 在 iCloud.com 上使用微軟雅黑作為了中文字體?

TAG:Dropbox | 雲存儲 | 編程 | iCloud | GoogleDrive | OneDrive |