SVN增量备份实际方案和脚本.doc_第1页
SVN增量备份实际方案和脚本.doc_第2页
SVN增量备份实际方案和脚本.doc_第3页
SVN增量备份实际方案和脚本.doc_第4页
SVN增量备份实际方案和脚本.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SVN增量备份实际方案和脚本该程序为SVN的增量备份脚本,在实际中使用。一、整体思路:1、 设置系统需要处理的环境变量,如SVN的安装目录、版本库目录、备份的目标目录(BACKUP_SVN_ROOT)等;2、 将系统备份初始修订号(每次提交时,系统自己保存的一个序号)储存在文件夹SVN_LOG_BEGIN下(参数可配置)3、 将本次备份结束修订号储存在文件夹SVN_LOG_END(参数可配置)4、 如果备份目标目录不存在,则创建之;5、 如果系统用项目列表备份目录不存在(保存所备份项目名称),为初次运行任务,则创建之;6、 如果系统用起始修订号备份目录(保存所有项目各起始修订号)不存在,为初次运行任务,则创建之;7、 如果系统用结束修订号备份目录(保存所有项目各结束修订号)不存在,为初次运行任务,则创建之;8、 删除原来的项目列表;9、 按备份时间的年月日生成备份目标目录的名称;如已经存在该名称的目录(已经备份),则跳转到checkBack,提示清空目录再备份;10、 在备份目标文件夹下建立本次备份的目标目录、项目列表保存目录、修订号起/始保存目录,用于将系统的对应目录转移到本此备份目录下,记录此次备份的情况;11、 拷贝MD5校验程序到目标盘,以备还原时校验用;-开始备份SVN代码库_增量方式-12、 循环调用dir /AD /B,判断为文件夹(项目名称),则调用子程序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 FilesVisualSVN 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 设置当前备份项目的结束修订号保存目录,其下存以对应的项目名称命名的文件,文件中保存结束修订号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 如果修起始订号备份目录不存在,则创建之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%_dumpset 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 /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 列举文件夹(项目名),进入备份具体项目子流程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:导出脚本主程序:二、导出脚本各项目具体执行程序设计思路: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:调用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 本脚本工具为增量备份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 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 goto :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 :BAKUPrem 取出上次备份后的版本号,并做1处理(注意此算法未在98系统验证)FOR /f %C IN (%SVN_DRV%SVN_LOG_BEGIN%SVN_PROJECT%.txt) DO set LOWER=%Cset /A LOWER=%LOWER%+1rem 不需要备份,则跳转结束IF %LOWER% gtr %UPPER% GOTO :N_EXIT:BAKUPecho %SVN_PROJECT%SVN_DRV%SVN_LOG%Proj_bk.txtecho %DATE% %TIME% 开始将 %SVN_ROOT%SVN_PROJECT%,从%LOWER%到%UPPER% 备份到 %BAK_TO% . %SVN_ROOT%/backup.logecho %LOWER% %SVN_DRV%SVN_LOG_BEGIN%SVN_PROJECT%.txtcopy /Y %SVN_DRV%SVN_LOG_END%SVN_PROJECT%.txt %BACKUP_DIRECTORY%SVN_LOG_END%SVN_PROJECT%.txtcopy /Y %SVN_DRV%SVN_LOG_BEGIN%SVN_PROJECT%.txt %BACKUP_DIRECTORY%SVN_LOG_BEGIN%SVN_PROJECT%.txt %SVN_HOME%binsvnadmin.exe dump %SVN_ROOT%SVN_PROJECT% -r %LOWER%:%UPPER% -incremental %BAK_TO%.svnecho 开始压缩 %BAK_TO% .rem %SVN_BIN%gzip -9 %BAK_TO%SVN_HOME%binbzip2 %BAK_TO%.svnecho 压缩 %BAK_TO% 完毕rem 解压时,则为%SVN_HOME%binbzip2 -d %BAK_TO%.svn.bz2rem 保存MD5校验,以备检查备份文件是否被非法修改%BACKUP_SVN_DRV%cd %BACKUP_PATH%md5sum.exe %BAK_TO%.svn.bz2 %BAK_TO%.md5echo 保存 %BAK_TO%.md5 完毕for /F tokens=1,2,3 delims=- %1 in (Date /T) do set DATE=%1-%2-%3for /F tokens=1,2 delims=: %1 in (time /T) do set TIME=%1:%2echo %DATE% %TIME% 将

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论