zoukankan      html  css  js  c++  java
  • svn备份脚 本

    一直用这套脚本备份,脚本主体虽不是原创,但是从网上得到后因为不能运行也进行了些修改,前两天看到有人问关于SVN备份的问题,今天又把脚本整理了一下,解决了不能循环备份多个配置库的问题。希望对大家有所帮助。在此也谢谢提供脚本主体的高人。
    我的备份策略是一个月一次全备份,一周一次增量备份,并且每天也进行增量备份,在Window任务里设置定时进行,设置好后就不用管了,再加一层保险就是定期把备份文件移到另外一台机器存储。
    (一)全备份,包含两个文件hotcopy.bat和最终执行文件fullbackup.bat
    1) hotcopy.bat
    @echo 正在备份版本库%1……
    rem @%SVN_HOME%insvnadmin hotcopy %1 %BACKUP_DIRECTORY%\%2
    @%SVN_HOME%svnadmin hotcopy %1 %BACKUP_DIRECTORY%\%2
    @echo 版本库%1成功备份到了%2!


    2)fullbackup.bat
    echo off
    rem Subversion的安装目录
    rem set SVN_HOME="F:Program FilesSubversion"
    set SVN_HOME="F:Program FilesCollabNet Subversion Server"
    rem 所有版本库的父目录
    set SVN_ROOT=G:SVN
    rem 备份的目录
    set BACKUP_SVN_ROOT=h:svnrootbak
    set BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%date:~0,10%

    if exist %BACKUP_DIRECTORY% goto checkBack
    echo 建立备份目录%BACKUP_DIRECTORY%>>%SVN_ROOT%/fullbackup.log
    mkdir %BACKUP_DIRECTORY%
    rem 验证目录是否为版本库,如果是则取出名称备份
    for /r %SVN_ROOT% %%I in (.) do @if exist "%%Iconfsvnserve.conf" hotcopy.bat "%%~fI" %%~nI
    goto end
    :checkBack
    echo 备份目录%BACKUP_DIRECTORY%已经存在,请清空。
    goto end
    :end


    (二)增量备份,包含三个文件,dump.bat、最终执行文件svndump.bat和配置库名称配置projectlist.conf
    1)dump.bat
    @ECHO OFF
    rem 调用格式:dump 项目库名
    if "%1"=="" goto no_args
    set PROJECT=%1
    if not exist %RAR_STORE%\%PROJECT% mkdir %RAR_STORE%\%PROJECT%
    cd %RAR_STORE%\%PROJECT%
    SET LOWER=0
    SET UPPER=0

    @echo 项目库%PROJECT%2...>> %Log_PATH%\%PROJECT%_log.txt
    %SVN_LOOK% youngest %SVN_REPOROOT%\%PROJECT%> %Log_PATH%A.TMP
    @echo 项目库%PROJECT%3...>> %Log_PATH%\%PROJECT%_log.txt
    @FOR /f %%D IN (%Log_PATH%A.TMP) DO set UPPER=%%D
    if %UPPER%==0 GOTO :N_EXIT
    if not exist %Log_PATH%\%PROJECT%_last_revision.txt GOTO :BAKUP
    rem 取出上次备份后的版本号,并做+1处理(注意此算法未在98系统验证)
    @FOR /f %%C IN (%Log_PATH%\%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
    rem %RAR_CMD% a -df %PROJECT%_%UPPER%.rar %
    rem 准备写备份日志信息
    IF %LOWER% gtr 0 GOTO :WRITENOTE
    @ECHO ------2-----%date% >> %Log_PATH%\%PROJECT%_log.txt
    @echo -- 3-------添加备份文件 %PROJECT%_%UPPER%.rar,从[%LOWER%]到[%UPPER%] >> %Log_PATH%\%PROJECT%_log.txt
    GOTO :COMPLETE

    :WRITENOTE
    @ECHO %date% >> %Log_PATH%\%PROJECT%_log.txt
    @echo -- 4------添加增量备份文件 %PROJECT%_%UPPER%.rar,从[%LOWER%]到[%UPPER%] >> %Log_PATH%\%PROJECT%_log.txt

    :COMPLETE
    rem 下面一行用于拷贝备份文件到映射的驱动器上
    rem copy %PROJECT%.rar %RAR_STORE%\%PROJECT%
    move %FILENAME%.dmp %RAR_STORE%\%PROJECT%
    del %Log_PATH%A.TMP
    @echo %UPPER% > %Log_PATH%\%PROJECT%_last_revision.txt

    :N_EXIT
    @echo 项目库%PROJECT%处理结束...>> %Log_PATH%\%PROJECT%_log.txt
    @CD..
    @exit /B
    :no_args
    @ECHO ON
    @echo "正确调用方法: dump 项目库名"


    2)svndump.bat 
    echo off
    rem Subversion的安装目录及执行文件
    set SVN_HOME="F:Program FilesCollabNet Subversion Server"
    set SVN_ADMIN=%SVN_HOME%svnadmin.exe
    set SVN_LOOK=%SVN_HOME%svnlook.exe
    rem 配置库仓库根目录
    set SVN_REPOROOT=G:SVN
    rem 压缩命令
    set RAR_CMD="E:Progra~1WinRARWinRAR"
    rem 增量备份文件存放路径
    set RAR_STORE="H:svnincrementW"
    rem 日志及最后一次备份修订号存放文件目录,以下是跟增量备份脚本目录同一目录
    set Log_PATH=G:ackupincrementW

    @echo 项目库%PROJECT%处理1...>> %Log_PATH%\%PROJECT%_log.txt
    rem 读取项目库列表文件,并忽略其中;开头的行
    FOR /f "eol=;" %%C IN (projectlist.conf) DO call G:ackupincrementWdump.bat %%C


    3)projectlist.conf
    ;**************************************************
    ;01. project1开发库
    ; 更新频率: 高
    ;**************************************************
    PROJECT1
    ;**************************************************
    ;02. 此处可写注释信息
    ;**************************************************
    PROJECT2
    PROJECT3
    PROJECT4
    PROJECT5

  • 相关阅读:
    20160130.CCPP体系详解(0009天)
    20160129.CCPP体系详解(0008天)
    20160128.CCPP体系详解(0007天)
    20160127.CCPP体系详解(0006天)
    20160126.CCPP体系详解(0005天)
    程序员_你的“强迫症”有哪些?
    天天写业务代码_如何成为技术大牛?
    阿里云全球首批MVP李文毅专访-一个“改邪归正”的90后
    【毕业季】穿越回毕业前一年_这次你会怎么选
    恢复Hyper-V虚拟机丢失的数据文件过程
  • 原文地址:https://www.cnblogs.com/liangxiaofeng/p/5391761.html
Copyright © 2011-2022 走看看