搬移Subversion主機的步驟

最近準備把我們龐大的Subversion主機移到新主機,原本以為只要把hotcopy的資料夾和檔案複製到新主機就可以完成移轉,沒想到還是遇到問題,幸好最後找到了問題點,再等下個放假日就能順利移轉過去。

Subversion環境

我們的Subversion server是使用Subversion Edge架設的,運行中的版本是5.1.1。主機每天夜間使用下列批次檔定時備份,每10天一個循環;n: 是NAS的網路磁碟機:

rem DATE1=0~9
set DATE1=%DATE:~9,1%
set DATE1=%DATE1: =%
c:\csvn\bin\svnadmin hotcopy c:\csvn\data\repositories\svn1\ n:\servers\svn1\%DATE1%\

還原備份

還原hotcopy的資料的指令只要把From、To資料夾對調就可以:

|rem 在新主機上執行,\5 是最新的備份
c:\csvn\bin\svnadmin hotcopy n:\servers\svn1\5\ c:\csvn\data\repositories\svn1\ 

複製好後進入管理網頁 http://新主機:3343/csvn 在版本庫清單按【Discover】就會抓到複製好的檔案庫。

我們在這裡遇到了問題:還原後的內容與備份不合,少了很多... 一開始懷疑是hotcopy出的內容有毀損,因此重新用dump匯出每個revision:

rem 在舊主機執行
svnadmin dump > svn1.dump

再把svn1.dump複製到新主機用load匯入:

rem 在新主機執行
svnadmin load c:\csvn\data\repositories\svn1 < svn1.dump

可惜還原後的內容依然不對。最後懷疑是Subversion Edge系統的問題,因為新主機安裝的是最新版 5.2.2,移除後重新安裝舊版的5.1.1,果然在5.1.1的環境裡就能正確取到備份內容了。

同步兩部SVN主機

順便加了同步版本資訊的處理,步驟如下:

  1. 在舊主機執行 svnsync init:
svnsync init --allow-non-empty --source-username 舊主機帳號 --source-password 舊主機密碼 --sync-username admin --sync-password 新主機admin密碼 http://新主機IP/svn/svn1 http://新主機IP/svn/svn1
  1. 建立 commit後 hooks:在c:\csvn\data\repositories\svn1\hooks資料夾裡建立 post-commit.bat,內容如下:
svnsync sync --non-interactive --source-username 舊主機帳號 --source-password 舊主機密碼 --sync-username admin --sync-password 新主機admin密碼 http://新主機IP/svn/svn1 http://新主機IP/svn/svn1

##

您可能也會有興趣的類似文章

簡睿

服務於軟體業的資訊老兵。興趣廣泛,學習力佳,樂於分享所知所學。

您可能也會喜歡…

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *