天天看點

SVN伺服器增量備份

團隊裡有一台SVN伺服器,空間達到了幾十個G,之前一直是隔段時間全盤拷貝備份,但是感覺太煩鎖了,前段時間做了将這台伺服器SVN的内容同步到另一台伺服器上,挺好用的,總結一下,過程:

作業系統:windows server 2008

SVN:VisualSVN Server 

伺服器:A表示原來代碼伺服器,B表示同步伺服器 

備份伺服器安裝與A相同的VisualSVN Server版本

1.在B上的環境變量(path)添加:C:\Program Files (x86)\VisualSVN Server\bin    添加這一步主要是為了下面用到SVN的指令不用輸路徑

2.建立庫,由于A伺服器已有了很多庫,是以做成了批處理檔案的方式,檔案内容如下:

svnadmin create 盤符:/Repositories/項目庫1

svnadmin create 盤符:/Repositories/項目庫2

……

項目庫1、2的名稱與A裡的一樣

然後執行這個批處理檔案,然後Repositories會出現很多庫檔案夾了……

3..建立目标庫的hooks檔案,檔案名為pre-revprop-change.bat,内容為空,先放在..\sysmodel目錄下

4.将上步建立的檔案拷到每個庫檔案夾下,跟上步一樣,用批處理檔案,檔案内容:

copy /y 本地盤符:\Repositories\sysmodel\pre-revprop-change.bat 盤符:\Repositories\項目庫1\hooks

copy /y 本地盤符:\Repositories\sysmodel\pre-revprop-change.bat 盤符:\Repositories\項目庫2\hooks

……

然後執行這個批處理檔案

5.關聯A與B裡的庫(初始化),還是用批處理:

svnsync init file:///本地盤符:/Repositories/項目庫1 項目庫1的SVN路徑(在A伺服器上的)

svnsync init file:///本地盤符:/Repositories/項目庫2 項目庫2的SVN路徑(在A伺服器上的)

……

然後執行這個批處理檔案,這一步是将A的内容同步下來了,時間有點久……

6.到上一步,B與A的内容一緻了,但是如果A上某個庫的項目庫有更新怎麼辦呢?這時要用到windows裡的任務計劃功能了

(1)建立同步庫.bat的批處理,内容如下:

svnsync sync file:///本地盤符:/Repositories/項目庫1

svnsync sync file:///本地盤符:/Repositories/項目庫2

……

(2)建立任務計劃,在計劃裡調用上一步建立的批處理檔案。每當任務執行時,就可以将A伺服器裡對應項目庫的更新内容差量更新下來了。

繼續閱讀