2008-10-24 95 views
10

我有大量的數據在世界各地的4個或5個站點上保持同步,每個站點大約有半個TB。這種變化(增加或改變)大約每天1.4千兆字節,並且數據可能在四個站點中的任何一個上發生變化。什麼是全球同步大量數據的最佳方式?

很大一部分(30%)的數據是重複的包(可能是打包的JDK),所以解決方案必須包含一種方法來獲取這樣的事實:在本地機器上存在這樣的事情並抓住他們,而不是從另一個網站下載。

版本控制不是問題,這不是一個代碼本身。

我只是有興趣,如果有任何解決方案(最好是開源),接近這樣的事情?

我的寶貝腳本使用rsync不會削減芥末了,我想做更復雜的智能同步。

感謝

編輯:這應該是基於UNIX :)

回答

12

你試過Unison嗎?

我已經有了很好的結果。這基本上是一個更聰明的rsync,這可能是你想要的。有一個列表比較文件同步工具here

+0

這*幾乎*正確,我特別喜歡鏈接到網站。有了Unison,它不會先看解決方案的本地文件系統,比如在父目錄或姐妹目錄(我甚至想定義這個目錄)。如果大小,名稱,模式時間和校驗和是相同的,那麼就抓住它... – Spedge 2008-10-24 16:09:34

+0

爲什麼不使用鏈接代替這些鏈接,而是複製這些JDK和什麼?擔心複製那些肯定不需要重複的東西似乎不太合適。 Unison將會同步鏈接......這樣就可以工作,並且減輕一些空間需求和一些令人頭痛的問題 – 2008-10-24 17:40:37

1

你有很多的選擇:

  • 您可以嘗試建立複製DB來存儲數據。
  • 使用組合rsynclftp和自定義腳本,但不適合你。
  • 使用混帳回購與他們之間最大壓縮和同步使用一些腳本
  • 由於數據量是相當大的,而且很可能重要的是,這樣做無論是在聘請專家的一些定製開發;)
5

聽起來像是一個BitTorrent的工作。

對於每個站點的每個新文件,創建一個bittorrent種子文件並將其放入集中式web可訪問目錄中。

每個站點然後下載(通過bittorrent)所有文件。這將產生帶寬共享和自動本地副本重用。

實際配方取決於您的需要。 例如,您可以爲每個主機上的每個文件創建一個bittorrent種子,並將種子文件的修改時間設置爲與文件本身的修改時間相同。既然你每天都會這樣做(小時?),最好使用諸如「make」之類的東西來爲(重新)創建僅用於新文件或更新文件的種子文件。

然後,您可以將所有主機的所有種子文件複製到集中位置(「tracker dir」),並帶有「只在更新時覆蓋」選項。這會爲您提供一組種子文件,供所有文件的所有最新副本使用。

然後每個主機下載所有的種子文件(再次,「覆蓋如果更新的設置」),並啓動bittorrent全部下載。這將下載/重新下載所有新的/更新的文件。

Rince重複,每天。

順便說一下,不會有「從本身下載」,就像你在評論中說的那樣。如果文件已經存在於本地主機上,它的校驗和將被驗證,並且不會進行下載。

2

工作如何沿着紅帽Global Filesystem線的東西,使整個結構跨越每個站點拆分到多個設備,而不是它的所有在每個位置複製嗎?

或者也許是一個商業網絡存儲系統,如LeftHand Networks(免責聲明 - 我不知道費用,並沒有使用它們)。

1

檢查出超級靈活....它很酷,沒有在大規模環境中使用它,但在3節點系統上它似乎完美工作。

相關問題