思路:先建立一个空文件夹,设置网络映射驱动器,之后把其他服务器的增量备份的内容通过网络映射传到网络映射文件夹
绿色 表示 注释
1. 在备份服务器上 创建要存放 备份内容的一个文件夹,共享文件夹,权限开放。
2. 为此文件夹aa创建映射路径:打开药映射的文件夹--》点击菜单栏的‘工具’---》网络映射驱动器
3. 在服务器端得配置库E:/repository目录下添加两个批处理脚本文件dump.bat、svndump.bat和一个多库目录文件projectlist.conf。
4. Dump.bat文件的内容如下:
@ECHO OFF
net use z: //192.168.201.33/111 映射地址、备份地址
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
net use z: /delete
:N_EXIT
@echo 项目库%PROJECT%处理结束...>> %Log_PATH%/%PROJECT%_log.txt
@CD..
@exit /B
:no_args
@ECHO ON
@echo "正确调用方法: dump 项目库名"
5. svndump.bat文件的内容如下:
echo off
rem Subversion的安装目录及执行文件
set SVN_HOME="C:/Program Files/VisualSVN Server/bin" /VisualSVN Server/bin目录
set SVN_ADMIN=%SVN_HOME%/svnadmin.exe svnadmin.exe 所在目录
set SVN_LOOK=%SVN_HOME%/svnlook.exe svnlook.exe 所在目录
rem 配置库仓库根目录
set SVN_REPOROOT=E:/repository E:/repository 多库时,多库的根目录
rem 压缩命令
set RAR_CMD="C:/Program Files/WinRAR" WinRAR 压缩文件的安装目录
rem 增量备份文件存放路径
set RAR_STORE="z:"
rem 日志及最后一次备份修订号存放文件目录,以下是跟增量备份脚本目录同一目录
set Log_PATH=E:/repository E:/repository 生成的日志所在目录
@echo 项目库%PROJECT%处理1...>> %Log_PATH%/%PROJECT%_log.txt
rem 读取项目库列表文件,并忽略其中;开头的行
FOR /f "eol=;" %%C IN (E:/repository/projectlist.conf) DO call E:/repository/dump.bat %%C 根据文件所在地放进行修改
6. projectlist.conf的文件内容如下:此列表对应库的列表。
假如服务器端得配置库E:/repository目录下有两个库:test、repo,则projectlist.conf文件的内容:
repo
test
7. 设置svndump.bat文件到任务计划里面,每次自动执行增量备份。
8. 还原增量备份的内容,进入dmp文件所在文件夹,在cmd下面运行如下命令:
svnadmin load 要恢复的版本库路径及名称 < 导出的命名
例:svnadmin load E:/svnroot/project1<dumpfile
或者把几个增量备份文件同时写在一个bat脚本中,运行这个脚本还原 即可。