SVN自动全备份及增量备份脚本,包含文件压缩,可加入window 任务

在此也谢谢提供脚本的高人。
我的备份策略是一个月一次全备份,一周一次增量备份,并且每天也进行增量备份,在Window任务里设置定时进行,设置好后就不用管了,再加一层保险就是定期把备份文件移到另外一台机器存储。
(一)全备份,包含两个文件hotcopy.bat和最终执行文件fullbackup.bat
1) hotcopy.bat
@echo 正在备份版本库%1……
rem @%SVN_HOME%/bin/svnadmin 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 Files/Subversion"
set SVN_HOME="F:/Program Files/CollabNet 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 "%%I/conf/svnserve.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 Files/CollabNet 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~1/WinRAR/WinRAR"
rem 增量备份文件存放路径
set RAR_STORE="H:/svnincrementW"
rem 日志及最后一次备份修订号存放文件目录,以下是跟增量备份脚本目录同一目录
set Log_PATH=G:/backup/incrementW

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


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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值