|
SVN備份腳本完整資料
在先前的備份腳本帖子中http://www./bbs/thread-623-1-1.html,我們討論了如何使用腳本自動(dòng)備份,可能由于沒有完整的歸檔整理,容易造成一些誤解,這里給出我目前在用的備份腳本,便于大家參考。
腳本總共設(shè)計(jì)了4個(gè)文件,如下: 【1】調(diào)度腳本 svndump.bat,可以用windows的計(jì)劃任務(wù)設(shè)定自動(dòng)備份 QUOTE:
@echo off
@echo ================================================ @echo 說明:啟動(dòng)備份時(shí),需要配置兩個(gè)環(huán)境變量 @echo 1、SVN_HOME 指定svn的安裝目錄 @echo 2、RAR_CMD 指定RAR命令行壓縮工具所在目錄 @echo 3、SVN_REPOROOT 指定項(xiàng)目庫的根目錄(多庫模式) @echo 另外,如果需要異地備份,可以指定為網(wǎng)絡(luò)映射Z盤 @echo ================================================ rem set logfile=svndump.log set SVN_HOME=C:\Progra~1\Subversion\bin set SVN_ADMIN=%SVN_HOME%\svnadmin.exe set SVN_LOOK=%SVN_HOME%\svnlook.exe set SVN_REPOROOT=e:\svn\repository set RAR_CMD="C:\Progra~1\WinRAR\Rar.exe" rem if not exist z:\nul net use z: \\192.168.2.226\g$\svndump rem 讀取項(xiàng)目庫列表文件,并忽略其中;開頭的行 FOR /f "eol=;" %%C IN (projectlist.conf) DO @call dump.bat %%C 【2】備份腳本 dump.bat,由svndump.bat調(diào)度,有入口參數(shù) QUOTE:
@ECHO OFF
rem 調(diào)用格式:dump 項(xiàng)目庫名 if "%1"=="" goto no_args set PROJECT=%1 if not exist %PROJECT% mkdir %PROJECT% cd %PROJECT% SET LOWER=0 SET UPPER=0 @FOR /f %%D IN (‘%SVN_LOOK% youngest %SVN_REPOROOT%\%PROJECT%‘) DO set UPPER=%%D if %UPPER%==0 GOTO :N_EXIT if not exist %PROJECT%_last_revision.txt GOTO :BAKUP rem 取出上次備份后的版本號(hào),并做+1處理(注意此算法未在98系統(tǒng)驗(yàn)證) @FOR /f %%C IN (%PROJECT%_last_revision.txt) DO @set LOWER=%%C @set /a LOWER=%LOWER%+1 rem 不需要備份,則跳轉(zhuǎn)結(jié)束 IF %LOWER% gtr %UPPER% GOTO :N_EXIT :BAKUP SET FILENAME=%PROJECT%_%LOWER%_%UPPER% @ECHO 開始備份項(xiàng)目庫:%PROJECT%,生成文件=%FILENAME% %SVN_ADMIN% dump %SVN_REPOROOT%\%PROJECT% -r %LOWER%:head --incremental >%FILENAME%.dmp %RAR_CMD% a -df %PROJECT%_%UPPER%.rar %FILENAME%.dmp rem 準(zhǔn)備寫備份日志信息 IF %LOWER% gtr 0 GOTO :WRITENOTE if not exist %PROJECT%_log.txt @copy ..\log.conf %PROJECT%_log.txt @ECHO %date% >> %PROJECT%_log.txt @echo -- 添加備份文件 %PROJECT%_%UPPER%.rar,從[%LOWER%]到[%UPPER%] >> %PROJECT%_log.txt GOTO :COMPLETE :WRITENOTE @ECHO %date% >> %PROJECT%_log.txt @echo -- 添加增量備份文件 %PROJECT%_%UPPER%.rar,從[%LOWER%]到[%UPPER%] >> %PROJECT%_log.txt :COMPLETE rem 下面一行用于拷貝備份文件到映射的驅(qū)動(dòng)器上 rem copy %PROJECT%.rar z:\%PROJECT%\ @echo %UPPER% > %PROJECT%_last_revision.txt :N_EXIT @echo 項(xiàng)目庫%PROJECT%處理結(jié)束... @CD.. @exit /B :no_args @ECHO ON @echo "正確調(diào)用方法: dump 項(xiàng)目庫名" 【3】項(xiàng)目庫列表 projectlist.conf,可以用windows的計(jì)劃任務(wù)設(shè)定自動(dòng)備份 QUOTE:
;**************************************************
;01. 公共資源庫 ; 更新頻率: 低 ;************************************************** comm ;************************************************** ;02. 造價(jià)中心WEB應(yīng)用系統(tǒng)(含人員資質(zhì)和造價(jià)分析) ; 更新頻率: 一般 ;************************************************** dezxweb ;************************************************** ;03. 造價(jià)中心地面工程臺(tái)帳查詢系統(tǒng) ; 更新頻率: 終止 ;************************************************** ;dmgc ;************************************************** ;04. 井下作業(yè)綜合管理系統(tǒng) ; 更新頻率: 一般 ;************************************************** jxzy ;************************************************** ;05. ERP用戶權(quán)限系統(tǒng) ; 更新頻率: 低 ;************************************************** erpuser 【4】日志模版腳本 log.conf,可以用來作為每個(gè)新備份項(xiàng)目的日志模版 QUOTE:
備份日志:
//這是一個(gè)日志文件的抬頭信息,可以記錄一些有意義的信息 這里是我的項(xiàng)目庫備份日志實(shí)例 QUOTE:
備份日志:
星期一 2007-02-12 -- 添加備份文件 dezxweb_794.rar,從[0]到[794] 星期三 2007-02-28 -- 添加增量備份文件 dezxweb_807.rar,從[795]到[807] 星期日 2007-03-04 -- 添加增量備份文件 dezxweb_808.rar,從[808]到[808] 星期日 2007-03-11 -- 添加增量備份文件 dezxweb_809.rar,從[809]到[809] 這個(gè)備份的腳本來自于 zhumingzhou的啟發(fā),也非常感謝david 幫我找到增量定義的方法。在此表示深深謝意! |
|
|