Windows

如何使用 Windows DFS 複製嚴格序列化一個文件夾的複制?

  • July 17, 2021

我有兩個位置 A+B,需要使用 Windows DFS 複製以下列方式處理這些分支之間的一個特殊目錄:所有寫入 A 目錄的內容都需要由 B 拉取。B 的那個目錄中的所有刪除都需要再次推到A。最後,它只是簡單地將所有內容從 A 拉到 B,並在某個時刻在 A 和 B 處清空。

重要的是目錄是一些特殊應用程序的文件系統介面。該應用程序僅在主機 B 上執行,而主機 A 為該應用程序創建數據。DFS 用於將數據從 A 可靠地傳輸到 B。

因為它是一個文件系統介面,所以它需要遵循一些約定,以便 B 處的應用程序知道它何時可以訪問所有文件。該約定只是在創建所有數據之前創建一個特殊的鎖定文件,並在創建所有數據後刪除鎖定文件。刪除鎖定文件意味著主機 B 上的應用程序可以隨意處理數據。當然,與傳輸的其他數據相比,該鎖定文件非常非常小,而所有其他數據理論上可能有數百 MiB 大小。因此,為了可靠地使用 DFS,複製時需要考慮文件系統操作的順序。

從我目前所讀到的關於 DFS 的內容來看,它可能會亂序傳輸文件:

DFS 複製是否按時間順序複製文件?

不可以。文件可能會亂序複製。

OTOH,它已經通過 ID 跟踪文件,並且鎖定文件的 ID 將低於其他文件的 ID。

如果我重命名文件會怎樣?

DFS 複製在下一次複製期間重命名複製組的所有其他成員上的文件。使用唯一 ID 跟踪文件,因此重命名文件和在副本中移動文件不會影響 DFS 複製複製文件的能力。

此外,似乎還有一些關於並發下載的設置,在最壞的情況下可能會降低到 1。不過,這當然不能保證像我需要的那樣嚴格的文件操作順序。鎖定文件可以在傳輸兩個其他大文件之間簡單地刪除。

如何處理同時複製?

每個複製文件夾有一個更新管理器。更新管理器彼此獨立工作。

使用Windows 更改日誌並按照要複製的源文件夾中的事件順序進行某種操作模式或類似的 DFS 會很棒。這應該保證 DFS 在第一個和最後一個操作中創建和刪除鎖定文件,就像在源文件夾中所做的那樣。

那麼,有什麼方法可以讓 DFS 中的文件操作嚴格排序,以便與基於文件系統的介面一起使用?

謝謝!

不,DFS 複製不支持此功能;它在設計上是非同步的,沒有辦法讓它執行同步複製,或者保證遵循操作的順序。


我不知道您的應用程序的內部工作原理,但是使用兩個伺服器都可以訪問的公共網路共享似乎更容易和更安全。或者,如果伺服器 B 真的想在本地磁碟上查找數據,只需在那裡創建一個伺服器 A 可以寫入的共享。

引用自:https://serverfault.com/questions/1069828