接上篇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環境下創建任務,大同小異,相信大家都能輕松搞定。