svn增量备份实际方案和脚本

上传人:第*** 文档编号:33608414 上传时间:2018-02-16 格式:DOC 页数:7 大小:175KB
返回 下载 相关 举报
svn增量备份实际方案和脚本_第1页
第1页 / 共7页
svn增量备份实际方案和脚本_第2页
第2页 / 共7页
svn增量备份实际方案和脚本_第3页
第3页 / 共7页
svn增量备份实际方案和脚本_第4页
第4页 / 共7页
svn增量备份实际方案和脚本_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《svn增量备份实际方案和脚本》由会员分享,可在线阅读,更多相关《svn增量备份实际方案和脚本(7页珍藏版)》请在金锄头文库上搜索。

1、SVN 增量备份实际方案和脚本该程序为 SVN 的增量备份脚本,在实际中使用。一、整体思路:1、设置系统需要处理的环境变量,如 SVN 的安装目录、版本库目录、备份的目标目录(BACKUP_SVN_ROOT)等;2、将系统备份初始修订号(每次提交时,系统自己保存的一个序号)储存在文件夹 SVN_LOG_BEGIN 下(参数可配置)3、将本次备份结束修订号储存在文件夹 SVN_LOG_END(参数可配置)4、如果备份目标目录不存在,则创建之;5、如果系统用项目列表备份目录不存在(保存所备份项目名称) ,为初次运行任务,则创建之;6、如果系统用起始修订号备份目录(保存所有项目各起始修订号)不存在,

2、为初次运行任务,则创建之;7、如果系统用结束修订号备份目录(保存所有项目各结束修订号)不存在,为初次运行任务,则创建之;8、删除原来的项目列表;9、按备份时间的年月日生成备份目标目录的名称;如已经存在该名称的目录(已经备份) ,则跳转到 checkBack,提示清空目录再备份;10、 在备份目标文件夹下建立本次备份的目标目录、项目列表保存目录、修订号起/始保存目录,用于将系统的对应目录转移到本此备份目录下,记录此次备份的情况;11、 拷贝 MD5 校验程序到目标盘,以备还原时校验用;-开始备份 SVN 代码库_增量方式-12、 循环调用dir /AD /B,判断为文件夹(项目名称) ,则调用子

3、程序work_dump_incremental.bat 项目名称,以对各个项目逐个增量备份;13、 子程序调用结束-各项目备份完毕,则将源项目路径根目录下的所有文件备份-包含认证文件、日志等;14、 退出系统。导出脚本主程序及说明:echo 2011-01-31 copyright V2.0(V1.0 为热点拷贝和整项目 DUMP 方式)rem 本脚本工具为增量备份 SVN 版本用总脚本,与之配套的脚本为svn_load_in.bat、work_load_in.batecho offrem Subversion 的安装目录set SVN_HOME=C:Program FilesVisualSV

4、N Serverrem 设置 SVN 代码库所在的驱动器盘符 -需要修改set SVN_DRV=D:rem 所有版本库的父目录- 需要修改set SVN_ROOT=D:Repositoriesrem 设置 SVN 代码库所在的目录set SVN_DIR=Repositoriesrem 设置当前已经备份项目列表保存目录set SVN_LOG=svn_logrem 设置当前备份项目的起始修订号保存目录,其下存以对应的项目名称命名的文件,文件中保存起始修订号set SVN_LOG_BEGIN=svn_log_beginrem 设置当前备份项目的结束修订号保存目录,其下存以对应的项目名称命名的文件,文

5、件中保存结束修订号set SVN_LOG_END=svn_log_endrem 备份的盘符-需要修改set BACKUP_SVN_DRV=F:rem 备份的目录-需要修改set BACKUP_SVN_ROOT=F:backupsvnset BACKUP_SVN_FOLDER=backupsvnrem 如果备份目录不存在,则创建之-数据源部分if not exist %BACKUP_SVN_ROOT% md %BACKUP_SVN_ROOT% rem 如果项目列表备份目录不存在,则创建之if not exist %SVN_DRV%SVN_LOG% md %SVN_DRV%SVN_LOG%rem

6、如果修起始订号备份目录不存在,则创建之if not exist %SVN_DRV%SVN_LOG_BEGIN% md %SVN_DRV%SVN_LOG_BEGIN%rem 如果结束修订号备份目录不存在,则创建之if not exist %SVN_DRV%SVN_LOG_END% md %SVN_DRV%SVN_LOG_END%rem 删除原来的项目列表del /Q %SVN_DRV%SVN_LOG%*.*set BACKUP_DATE=%date:0,10%echo %BACKUP_DATE%set BACKUP_PATH=%BACKUP_SVN_FOLDER%BACKUP_DATE%_dum

7、pset BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%BACKUP_DATE%_dumpif exist %BACKUP_DIRECTORY% goto checkBackrem 创建 -目标数据部分echo -建立备份目录%BACKUP_DIRECTORY%-%SVN_ROOT%/backup.logmkdir %BACKUP_DIRECTORY%mkdir %BACKUP_DIRECTORY%SVN_LOG%mkdir %BACKUP_DIRECTORY%SVN_LOG_BEGIN%mkdir %BACKUP_DIRECTORY%SVN_LOG_END%copy /

8、Y %SVN_HOME%binmd5sum.exe %BACKUP_DIRECTORY%md5sum.exe%SVN_DRV%cd cd %SVN_DIR%echo -开始备份 SVN 代码库_增量方式- %SVN_ROOT%/backup.logrem 验证目录是否为版本库,如果是则取出名称备份不用校验,对不设主干、标签、分支的资料性项目也做备份rem for /r %SVN_ROOT% %I in (.) do if exist %Iconfsvnserve.conf %SVN_ROOT%simpleBackup.bat %fI %nIrem 列举文件夹(项目名) ,进入备份具体项目子流程

9、for /F %d in (dir /AD /B) do call %SVN_ROOT%work_dump_incremental.bat %dgoto end:checkBackecho 备份目录%BACKUP_DIRECTORY%已经存在,请清空。goto exit:endcopy /Y %SVN_ROOT%*.* %BACKUP_DIRECTORY%*.*echo -备份 SVN 代码库完毕-%SVN_ROOT%/backup.logset BACKUP_DATE=%SVN_DRV%cd echo on :exit附件 1:导出脚本主程序:svn_dump_incremental.bat

10、二、导出脚本各项目具体执行程序设计思路:1、如输入参数为空,则退出本个项目备份(主要为调试用)2、将本次备份的项目名称追加到%SVN_DRV%SVN_LOG%Proj_lst.txt 列表中;3、设置 BAK_TO 为需要备份生成的文件名(含路径) ;设置本次备份的默认最小、最大修订号均为零 SET LOWER=0,SET UPPER=04、如为初次备份(无%SVN_DRV%SVN_LOG_END%SVN_PROJECT%.txt) ,则到 MK_END_LOG 处新建5、否则,将上次备份的结束修订号 COPY 到本次准备备份的起始修订号文件夹(使用时加 1) ;6、:MK_END_LO G:

11、调用 svnlook.exe,将当前系统的修订号取出;7、如果当前的修订号为 0,则不需备份8、如为初次备份,则用初始化的 LOWER=0;否则,取出上次备份后的版本号,并做1处理(注意此算法未在 98 系统验证 );9、:BAKUP 备份项目的起始修订号;10、 调用 svnadmin.exe 进行增量备份;11、 调用 bzip2 进行压缩;12、 保存 MD5 校验,以备检查备份文件是否被非法修改;13、 记录备份日志、时间戳;14、 每次更新已经备份的项目列表;15、 结束echo 2010-05-27 copyright V2.0(V1.0 为热点拷贝和整项目 DUMP 方式)rem

12、 本脚本工具为增量备份 SVN 版本用子执行脚本,与之配套的脚本为svn_load_in.bat、work_load_incremental.batecho 进入单项目备份set SVN_PROJECT=%1rem 参数不正确,结束if %1= goto no_argsrem 将项目名称添加到项目列表,以备还原时需要echo %SVN_PROJECT%SVN_DRV%SVN_LOG%Proj_lst.txtfor /F tokens=1,2,3 delims=- %1 in (Date /T) do set DATE=%1-%2-%3for /F tokens=1,2 delims=: %1

13、in (time /T) do set TIME=%1:%2rem BAK_TO 为需要备份生成的文件名,包含项目名和日期、时间,如需要自动导入时,则不能要日期时间等标识(符号后面的去掉)【重要】rem set BAK_TO=%BACKUP_DIRECTORY%SVN_PROJECT%DATE%TIME%set BAK_TO=%BACKUP_DIRECTORY%SVN_PROJECT%SET LOWER=0SET UPPER=0rem -rem 如为初次备份,则用初始化的 LOWER=0,if not exist %SVN_DRV%SVN_LOG_END%SVN_PROJECT%.txt go

14、to :MK_END_LOGrem 将上次保存的结束修订号,拷到本次作为起始终结号(使用时需要+1)copy /Y %SVN_DRV%SVN_LOG_END%SVN_PROJECT%.txt %SVN_DRV%SVN_LOG_BEGIN%SVN_PROJECT%.txt del /Q %SVN_DRV%SVN_LOG_END%SVN_PROJECT%.txt:MK_END_LOGrem 取当前的修订号为备份终结号- 之后,将其存于%SVN_DRV%SVN_LOG_END%SVN_PROJECT%.txt%SVN_HOME%binsvnlook.exe youngest %SVN_ROOT%SVN_PROJECT% %SVN_DRV%SVN_LOG_END%SVN_PROJECT%.txtFOR /f %D IN (%SVN_DRV%SVN_LOG_END%SVN_PROJECT%.txt) DO set UPPER=%Drem 如果当前的修订号为 0,则不需备份if %UPPER%=0 GOTO :N_EXITrem 如为初次备份,则用初始化的 LOWER=0if not exist %SVN_DRV%SVN_LOG_BEGIN%SVN_PROJECT%.txt GOTO :BAK

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号