SVN备份脚本完整资料

http://bbs.iusesvn.com/viewthread.php?tid=1179&highlight=%E5%A4%87%E4%BB%BD

 

SVN备份脚本完整资料

在先前的 备份 脚本帖子中 http://www.iusesvn.com/bbs/thread-623-1-1.html,我们讨论了如何使用脚本 自动 备份,可能由于没有完整的归档整理,容易造成一些误解,这里给出我目前在用的 备份脚本,便于大家参考。

脚本总共设计了4个 文件,如下:
【1】调度脚本 svndump.bat,可以用windows的计划任务设定自动备份
引用:
@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%/svn admin. 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调度,有入口参数
引用:
@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的计划任务设定自动备份
引用:
;**************************************************
;01. 公共资源库
;    更新频率: 低
;**************************************************
comm

;**************************************************
;02. 造价中心WEB应用系统(含人员资质和造价分析)
;    更新频率: 一般
;**************************************************
dezx web

;**************************************************
;03. 造价中心地面工程台帐查询系统
;    更新频率: 终止
;**************************************************
;dmgc

;**************************************************
;04. 井下作业综合 管理系统
;    更新频率: 一般
;**************************************************
jxzy

;**************************************************
;05. ERP 用户 权限系统
;    更新频率: 低
;**************************************************
erpuser
【4】日志模版脚本 log.conf,可以用来作为每个新备份项目的日志模版
引用:
备份日志:
//这是一个日志文件的抬头信息,可以记录一些有意义的信息
这里是我的项目库 备份日志实例
引用:
备份日志:
星期一 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 帮我找到增量定义的方法。在此表示深深谢意!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值