SVN备份脚本完整资料
在先前的备份脚本帖子中http://www./bbs/thread-623-1-1.html,我们讨论了如何使用脚本自动备份,可能由于没有完整的归档整理,容易造成一些误解,这里给出我目前在用的备份脚本,便于大家参考。
脚本总共设计了4个文件,如下: 【1】调度脚本 svndump.bat,可以用windows的计划任务设定自动备份 QUOTE:
@echo off
@echo ================================================ @echo 说明:启动备份时,需要配置两个环境变量 @echo 1、SVN_HOME 指定svn的安装目录 @echo 2、RAR_CMD 指定RAR命令行压缩工具所在目录 @echo 3、SVN_REPOROOT 指定项目库的根目录(多库模式) @echo 另外,如果需要异地备份,可以指定为网络映射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 读取项目库列表文件,并忽略其中;开头的行 FOR /f "eol=;" %%C IN (projectlist.conf) DO @call dump.bat %%C 【2】备份脚本 dump.bat,由svndump.bat调度,有入口参数 QUOTE:
@ECHO OFF
rem 调用格式:dump 项目库名 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 取出上次备份后的版本号,并做+1处理(注意此算法未在98系统验证) @FOR /f %%C IN (%PROJECT%_last_revision.txt) DO @set LOWER=%%C @set /a LOWER=%LOWER%+1 rem 不需要备份,则跳转结束 IF %LOWER% gtr %UPPER% GOTO :N_EXIT :BAKUP SET FILENAME=%PROJECT%_%LOWER%_%UPPER% @ECHO 开始备份项目库:%PROJECT%,生成文件=%FILENAME% %SVN_ADMIN% dump %SVN_REPOROOT%\%PROJECT% -r %LOWER%:head --incremental >%FILENAME%.dmp %RAR_CMD% a -df %PROJECT%_%UPPER%.rar %FILENAME%.dmp rem 准备写备份日志信息 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 下面一行用于拷贝备份文件到映射的驱动器上 rem copy %PROJECT%.rar z:\%PROJECT%\ @echo %UPPER% > %PROJECT%_last_revision.txt :N_EXIT @echo 项目库%PROJECT%处理结束... @CD.. @exit /B :no_args @ECHO ON @echo "正确调用方法: dump 项目库名" 【3】项目库列表 projectlist.conf,可以用windows的计划任务设定自动备份 QUOTE:
;**************************************************
;01. 公共资源库 ; 更新频率: 低 ;************************************************** comm ;************************************************** ;02. 造价中心WEB应用系统(含人员资质和造价分析) ; 更新频率: 一般 ;************************************************** dezxweb ;************************************************** ;03. 造价中心地面工程台帐查询系统 ; 更新频率: 终止 ;************************************************** ;dmgc ;************************************************** ;04. 井下作业综合管理系统 ; 更新频率: 一般 ;************************************************** jxzy ;************************************************** ;05. ERP用户权限系统 ; 更新频率: 低 ;************************************************** erpuser 【4】日志模版脚本 log.conf,可以用来作为每个新备份项目的日志模版 QUOTE:
备份日志:
//这是一个日志文件的抬头信息,可以记录一些有意义的信息 这里是我的项目库备份日志实例 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] 这个备份的脚本来自于 zhumingzhou的启发,也非常感谢david 帮我找到增量定义的方法。在此表示深深谢意! |
|