SVN版本庫自動備份如何實現?
本節和大家學習一下SVN版本庫自動備份問題,感興趣的朋友們可以看一下,當讓本節的內容僅供參考,如果你有什么好的方法大家可以相互討論,歡迎大家一起來學習SVN版本庫自動備份的知識,希望本文能教會你更多東西。
截止到目前為止,手上的項目都納入SVN進行管理,隨著而來的問題是:如何為SVN版本庫實現自動備份。我手上用的是VisualSVN工具來代替SVN服務端,但VisualSVN沒有提供備份工具,沒辦法只好自己寫一個,再寫這個腳本的時候,我參考了SCMLife論壇上某位朋友的腳本文件,并稍做修改,現在貢獻出來!
前提條件:
你的機器上裝有VisualSVN,如果沒有,也沒有關系,只要確保Subversion的安裝目錄下可以找到svnadmin這個命令即可。因為版本庫的備份就是利用這個程序來實現;
你的機器上要有7zip的命令行程序7z.exe,如果沒有,請去7zip官方網站下載,因為我們要用到這個程序來實現對備份后的版本庫進行壓縮保存;
知道你的版本庫所在目錄;
SVN版本庫自動備份中備份腳本分為兩個批處理文件,它們分別是:backup.bat與simpleBackup.bat。需要記住得是:simpleBackup.bat文件要放在版本庫所在的目錄下;而backup.bat可以任意放置。我們調用的是backup.bat;每次備份成功后,會在版本庫所在目錄下的backup.log文件中記錄;
backup.bat源碼
echooff
remSubversion的安裝目錄
setSVN_HOME="C:\ProgramFiles\VisualSVNServer"
rem所有版本庫的父目錄
setSVN_ROOT=E:\Repositories
rem備份的目錄
setBACKUP_SVN_ROOT=E:\bak
rem創建存放版本庫的臨時目錄
setBACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%date:~0,4%%date:~5,2%%date:~8,2%
ifexist%BACKUP_DIRECTORY%gotocheckBack
echo%date:~0,4%%date:~5,2%%date:~8,2%:建立備份目錄%BACKUP_DIRECTORY%>>%SVN_ROOT%/backup.log
SVN版本庫自動備份時需要rem創建備份目錄
md%BACKUP_DIRECTORY%
rem驗證目錄是否為版本庫,如果是則取出名稱備份
for/r%SVN_ROOT%%%Iin(.)do@ifexist"%%I\conf\svnserve.conf"call%SVN_ROOT%\simpleBackup.bat"%%~fI"%%~nI
echo開始壓縮版本庫,請不要中止....
%SVN_ROOT%\7z.exea-tzip%BACKUP_SVN_ROOT%\%date:~0,4%%date:~5,2%%date:~8,2%.zip%BACKUP_DIRECTORY%\*-r>nul
echo版本庫壓縮完成!
rem清除臨時創建備份目錄
rd/s/q%BACKUP_DIRECTORY%
gotoend
:checkBack
echo備份目錄%BACKUP_DIRECTORY%已經存在,請清空。
gotoend
:end
SimpleBackup.bat源碼@echo正在備份版本庫%1......
@%SVN_HOME%\bin\svnadminhotcopy%1%BACKUP_DIRECTORY%\%2
@echo版本庫%1成功備份到了%2!
PS:在編寫批處理文件時,我試圖創建一個變量,該變量用于保存當前日期,但是不知為何總是不能成功,相關代碼如下:
echooff
setfilename=%date:~0,4%%date:~5,2%%date:~8,2%
echo文件名:%filename%。本節介紹SVN版本庫自動備份完畢,請關注本節其他相關報道。
【編輯推薦】