2011-10-05 60 views
12

我們正在移動服務器,最後一個項目正在移動到svn版本庫。在服務器之間遷移Subversion版本庫

有大約10個各種svn庫的演出。它們是使用以下命令創建的: svnadmin create --fs-type fsfs

服務器A(原始)具有svn 1.4,而服務器B(目標)具有svn 1.6。

我的想法是使用rsync遷移整套存儲庫(他們都在服務器上的1個文件夾),但我擔心,有些事情可能既得不到遷移或者我需要爲這個爲rsync專用交換機上班。

大多數在線教程只討論一次移動1個存儲庫,例如使用svnadmin hotcopy,但我需要將大約100個左右移動到一起。這是否正確?

回答

15

即使在不同的操作系統上,Subversion的FSFS在拷貝和移動時也相當穩定。儘管mliebelt通過dump重新載入是正確的,但需要年齡才能移動10 GB!

這就是爲什麼我會建議採用以下步驟:

  1. 複製通過文件系統到新的服務器存儲庫。
    例如$ scp -r /var/repos/ [email protected]:repos/

  2. 做一個$ svnadmin upgrade做一個更新庫1.6(這是可選的,但強烈建議,如果你想使用1.5/1.6功能,如合併跟蹤,稀疏檢出等。)

  3. 在每個存儲庫上執行$ svnadmin verify以驗證所有修訂是否正常(您可以在已運行的服務器上執行此操作)。

通過這個過程中,您可能需要10至100更少的時間次數:

例如對於傾銷存儲庫,它通常需要大約每小時1 GB(主要取決於HD速度),轉儲文件比存儲庫要大得多(在SVN 1.4中!) 因此,您必須將較大的文件移動到新的服務器,並做一個卸載,這也需要大約1小時/ GB。如果您有GBit-LAN​​,請將其與通常僅受網絡連接(100 mbit約10 MB/sec)或HD(約100 MB/sec)限制的文件系統副本進行比較。

+2

這就是我最終做的,只是使用普通的rsync! 首先我必須設置svn用戶/組。移動之後,我使用svnadmin verify驗證存儲庫是否完好。最後,我必須編輯/etc/init.d/svnserve腳本以指向正確的目錄。所有似乎現在工作! (只是想補充說,所有的時間戳和用戶/組權限被保留) – Totomobile

+0

我也是這樣做的。我承認我有點擔心,認爲它不能工作,因爲我們的舊版本的SVN是1.2,新的服務器有SVN 1.6。儘管如此,這對我有效!正如@Peter Parker就「svnadmin升級/驗證」一樣提出的建議。 –

3

首先,我不是一個Subversion管理員,但我與他們工作了很多。所以不要只相信我的話,也請檢查其他來源。

我過去5年的經驗是:

  • 要移動Subversion版本庫,你應該使用Subversion的管理工具dumpload。他們只是爲了那份工作而編寫的。
  • dumpload另外檢查一切正常。通過使用它們,您可以獲得額外的「保險」,確保一切順利。
  • 我們從未遷移過兩個主要版本,但從一個主要版本轉移到下一個版本。您至少應該檢查是否支持從1.4.x遷移到1.6.x。通常新的服務器版本支持直接以前的版本,並支持遷移。所以也許你必須爲每個存儲庫進行兩次遷移。
  • 只要移動它們,您就可以使用舊版本庫,因爲Subversion允許您添加更新的更新版本。
  • 因爲所有的都可以通過命令行來完成,所以你可以自動化大部分操作,而顛覆管理員只需要檢查一切運行正常。

所以,是的,我會建議在彼此之後移動一個存儲庫。

3

欲瞭解更多關於svnadmin dumpsvnadmin load svn 1.6的信息,請參閱here。它提供了關於dumpload的一些討論,以及諸如--deltas,--incremental等的選項。

此外,請注意,如果您執行直接複製和svnadmin升級,則可節省時間,但存儲庫狀態可能不是最佳狀態。從svnadmin的幫助:

svnadmin help upgrade

用法:。升級REPOS_PATH

升級位於REPOS_PATH最新的存儲庫支持 架構版本。

此功能是作爲誰希望利用新的Subversion功能 ,而無需承擔了潛在的昂貴的完整存儲庫轉儲 和負荷運行庫 管理員提供了方便。因此,升級僅執行完成所需的最少工作量,同時仍保持存儲庫的完整性。 它不保證將最優化的 存儲庫狀態視爲轉儲和後續加載。