接上篇SVN版本庫無損遷移與自動備份(一)
三、定時自動備份版本庫解決方案
1、營運目標
①版本庫的遠程自動備份,將版本庫備份到另一台機器上。
假設我們要同步的源版本庫為 http://192.168.1.210/svn/svnprojec位於機器A,具體路徑我們不必理會,因為我們使用http協議
目標庫在機器B, file:///F:/Repositories/svnproject,這個為了簡單和安全,我們使用file://協議
②實現版本庫的本地備份,只需要將上述目標庫的位置,改成本地位置即可。
2、相關指令
達到備份版本庫的目的要用到兩個命令:
①svnsync init
初始化,建立目標庫和源庫之間的同步關係
命令格式: svnsync init 目標庫URL 源庫URL
(兩個URL之間有空格)
② svnsync sync
真正的同步
命令格式: svnsync sync 目標庫URL
3、過程樣本
(1)備份
①在要備份的機器上建立版本庫(如果是本地備份,則在本地建立版本庫):svnadmin create test1BackUp
②進入源版本庫的hooks目錄,例如cdD:\Repositories\TestRepostitory\hooks
③建立pre-revprop-change.bat檔案:複製pre-revprop-change.tmpl,將副檔名改為pre-revprop-change.bat,並且清空原有的所有內容,儲存。
④修改檔案:修改pre-revprop-change.tmpl檔案,用記事本開啟該檔案,把檔案最後的exit 1改為exit 0
(原指令碼的意思是如果修改的是svn:log屬性,將允許修改,返回0;否則,不允許,返回1,我們要將它改為允許修改所有的屬性,在指令碼中直接返回0)
⑤同步初步:
在目標機器上,開啟命令提示字元視窗,開啟SVN伺服器Bin目錄,運行
svnsync init file:///D:/Repositories/test1BackUp https://192.168.0.110/svn/Test1
(會提示輸入使用者名稱和密碼,這裡提供的使用者名稱和密碼是可以完全讀取於https://192.168.0.110/svn/Test1的電腦密碼,使用者名稱和密碼)
⑥實現同步:
在目標機器上,開啟命令提示字元視窗,開啟SVN伺服器Bin目錄,運行
svnsyncsync file:///D:/Repositories/test1BackUp
(如果提示輸入使用者名稱和密碼,你可以在這個命令之後加上 username 、password參數
即svnsync sync file:///D:/Repositories/test1BackUp --username username --password password)
註:
第⑤⑥兩步可以直接放在一起,寫入到一個批次檔(建立記事本,將⑤⑥中的兩句話放入,改記事本尾碼為.bat),將該批次檔放入SVN伺服器Bin目錄,雙擊運行即可。一會我們設定執行備份會用到這個批次檔。
如果是本地備份,則只需將目標URL改為本地庫位置即可。(針對VisualSVN,因為一台機器上只能有一個VisualSVN伺服器,所以所有版本庫只能在一個目錄下,才能被伺服器識別,這樣,備份只能備在相同目錄,似乎意義不大。)
如果版本庫較大時,備份的時間會有點慢,花費幾個小時或者一天也是有可能的,
備份完畢,你可以開啟目標庫看看,和源庫是一樣的。
(2)定時執行備份。
這裡我們用到了windows內建的工作排程器
①在控制台\所有控制台項\管理工具下,開啟工作排程器
主介面:點擊右側操作的建立任務
②開始建立任務,常規選項卡下,主要設定任務的基本資料,這裡我們一般給任務起一個名字就可以了,例如SVN同步
③操作選項卡下,點擊建立,這裡可以設定我們要執行的操作。我們備份SVN版本庫,需要執行,剛才設定好的備份批次檔。這個檔案,我們實現應該放在SVN伺服器安裝目錄的bin目錄下(不要放錯地方哦)。我們點擊瀏覽,找到這個檔案。
④在觸發器選項卡下,我們可以建立觸發器,這裡我們可以設定執行剛才設定的操作的條件。讓其自動執行。
⑤條件和設定選項卡下,可以設定執行該任務的其他條件,根據我們自己的情況選擇即可。
最後確定,大功告成,我們的定時自動備份SVN版本庫的任務就建立成功了。
提醒:如果版本庫不是很大,小於15G,完全可以把它建在金山快盤目錄下,使其自動備份到雲端
註:我使用的win7旗艦版,在winXP環境下建立任務,大同小異,相信大家都能輕鬆搞定。