-
SVN
备份还原操作手册
一、命令备份
1.
svnadmin
dump
全量备份
进入
SVN
服务端安装目录下运行
svnadmin d
ump
命令
(C:/Repositories/QA
为
SVN
库中项
目目录
,
为备份文件名
)
2.
svnadmin dump
增量备份
(
以增量把版本库
8
转存到
.1
,
-r [--revision] :
p>
指定版
本;
--incremental
:
以增量方式进行转存
)
3.
svnadmin dump<
/p>
还原
(
先创建一个新的版本库,
再还原完全备份,有增量备份的再还
原增量备份
)(
进入
SVN
服务端安装目录下调用
命令创建
test
测试库
)
4.
运行
svnadmin load
还原
命令
(
增量还原同全量还原
)
二、脚
本备份
(
针对项目库备份
)
1.
svnadmin dump<
/p>
全量备份脚本
(
在
SVN
库中添加全量备份脚本
,
p>
需要安装
对应的压缩工具
)
2.
脚本内容
rem
Subversion
的安装目录
set SVN_HOME=
rem
所有版本库的父目录
set
SVN_ROOT=C:Repositories
rem
备份的目录
set
BACKUP_SVN_ROOT=C:bak
rem
创建存放版本库的临时目录
set
BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%%date
:~0,4%%date:~5,2%%date:~8,2%
if exist
%BACKUP_DIRECTORY% goto checkBack
echo
%date:~0,4%%date:~5,2%%
date:~8,2%:
建
立
备
份
目
录
%BACKU
P_DIRECTORY%>>%SVN_ROOT%/
rem SVN
版本库自动备份时需要
rem
创建备份目录
md %BACKUP_DIRECTORY%
cd C:Program FilesVisualSVN Serverbin
dump
C:RepositoriesQA >
%BACKUP_DIRECTORY%FINANCE%date:~0,10%
rem
验证目录是否为版本库,如果是则取出名称备份
rem
for
/r%SVN_ROOT%%%I
in(.)do@ifexist
echo
开始压缩版本库,请不要中止
....
rem
%SVN_ROOT%-t
zip%BACKUP_SVN_ROOT%%date:~0,4%%date:~5,2%%date:~8
,2%.zip%BACKUP_DIRECTORY%*-r>nul
echo
版本库压缩完成
!
rem
清除临时创建备份目录
rem rd/s/q%BACKUP_DIRECTORY%
goto end
:checkBack
echo
备份目录
%BACKUP_
DIRECTORY%
已经存在,请清空。
goto end
:end
echo on
3.
运行脚本
,会生成备份文件
4.
备份还原
将备份文件考到
SVN
服务器安装目录下,运行
SVN
还原命令
三、脚本备份
(
针对
SVN
仓库备份
)
1.
svnadmin dump
全量备份脚本
(
在
SVN
库中添加全量备份脚本
)
2.
脚本内容
:Begin
@echo off
setlocal
enabledelayedexpansion
echo
正在准备备份所有版本库……
echo.
::
< br>设置
SVN
命令目录
set SVN_CMD=
::
设置所有版本库根目录
set REPOS_ROOT=C:Repositories
::
设置所有版本库备份根目录
set
REPOS_BACKUP_ROOT=C:RepositoriesBackUp
if not exist %REPOS_BACKUP_ROOT% mkdir
%REPOS_BACKUP_ROOT%
::
获取
LastRevisions
目录
set REPOS_LAST_REVERSION_DIRECTO
RY=%REPOS_BACKUP_ROOT%LastRevisions
if
not exist %REPOS_LAST_REVERSION_DIRECTORY% goto
Error1
::
设置所有版本库备份目录
set BACKUP_DIRECTORY=%REPOS_BACKUP_ROOT
%%date:~0,10%.dmp
set
BACKUP_DIRECTORY=%BACKUP_DIRECTORY:/=-%
if exist %BACKUP_DIRECTORY% goto Error2
mkdir %BACKUP_DIRECTORY%
::
设置用户权限信息备份目录
set REPOS_USER_INFO_DIRECTORY=%BACKUP_D
IRECTORY%UserInfo
if
not
exist
%REPOS_USER_INFO_DIRECTORY%
mkdir %REPOS_USER_INFO_DIRECTORY%
::
设置
L
astRevisions
备份目录
set
REPOS_LAST_REVERSION_BAC
KUP_DIRECTORY=%BACKUP_DIRECTORY%LastRevisions
if not exist
%REPOS_LAST_REVERSION_BACKUP_DIRECTORY% mkdir
%REPOS_LAST_REVERSION_BACKUP_DIRECTORY%
::
备份所有版本库
::i->
版本库、
j->
版
本库最新版本号、
k->
上次完全备份时版本库的版本号
echo
===================%date%
%t
ime:~0,8%:
执
行
全
部
版
本
库
备
份
By
陈
静
.===================
>>
%REPOS_BACKUP_ROOT%
echo
备份的版本库版本信息如下
: >>
%REPOS_BACKUP_ROOT%
::
读取版本库根目录下每个文件夹
,
并判断其是否是
一个版本库
for /r %REPOS_ROOT%
%%i in (.) do if exist %% (
::
将当前版本库的最新版本信息写入
tmp
文件
%SVN_CMD%svnlook
youngest %%~fi > %%~ni_last_
::
< br>取出当前版本库的最新版本信息
,
判断其是否大于
0,
是则进行处理
for /f %%j in (%%~ni_last_) do if %%j
gtr 0 (
::
判断以前是否存在该版本库的版本信息<
/p>
,
存在说明以前备份过
,
需要基于其进行备
份
;
否则对
该版本库
进行全新备份
if exist
%REPOS_LAST_REVERSION_DIRECTORY%%%~ni_last_ (
::
读取该版本库上次备份时保存的版本信息
,
如果小于当前版本信息则进行处理
for
/f
%%k
in
(%REPOS_LAST_REVERSION_DI
RECTORY%%%~ni_last_)
do
if
%%k lss %
%j (
echo.
echo
开始备份版本
库
%%~ni
……
< br>::
取得该版本库本次备份的起始版本号
set version=%%k
set /a
version=!version!+1
::
增量备份版本库
%SVN_CMD%svnadmin dump --deltas %%~fi
--revision !version!:head --incremental >
%BACKUP_DIRECTORY%%%~ni-!version!-%%
echo %%~ni: !version!-%%j >>
%REPOS_BACKUP_ROOT%
echo
版
p>
本
库
%%~ni
已
经
成
功
备
p>
份
到
%BACKUP_DIRECTORY
%%%~ni-!version!-%%!
)
)
else (
echo.
echo
开始备份版本库
%%~ni
……
::
全量备份版本库
%SVN_CMD%svnadmin
dump
--deltas %%~fi >
%BACKUP_DIRECTORY%%%~ni-0-%%
echo
%%~ni: 0-%%j >> %REPOS_BACKUP_ROOT%
echo
版本库
%%~ni
已经成功备份到
%BACKUP_DIRECTORY%%%~ni-0
-%%!
)
::
将本次版本库备份
时的最新版本信息写入文件保存
echo %%j>
%REPOS_LAST_REVERSION_DIRECTORY%%%~ni_last_
echo %%j>
%REPOS_LAST_REVERSION_BACKUP_DIRECTORY%%%~ni_last_
)
::
删除临时文件
del %%~ni_last_
)
echo.
echo
开始备份用户权限信息……
xcopy /y %REPOS_ROOT%authz
%REPOS_USER_INFO_DIRECTORY%
xcopy /y
%REPOS_ROOT%authz-windows
%REPOS_USER_INFO_DIRECTORY%
xcopy /y
%REPOS_ROOT%htpasswd %REPOS_USER_INFO_DIRECTORY%
echo.
echo
用户权限信息备份成功
!
echo.
echo
全部版本库备份成功
!
goto end
:Error1
echo.
echo
提示
:
echo
< br>上次备份保存的
%REPOS_LAST_REVERSION_DIRECTO
RY%
文件夹不存在
,
请确认
后从上次备份中拷贝
LastReversions
到
%REPOS_BACKU
P_ROOT%
目录
,
重新运行程序<
/p>
;
echo
或者
,
不基于上次备份重新执行备份
!
echo
重新备份
?(Y/N)
set /p input=
if %input%==Y
(
mkdir
%REPOS_LAST_REVERSION_DIRECTORY%
goto
Begin
) else (
goto End
)
:Error2
echo.
echo
备份目录已经
存在
,
请确认后删除该目录
,
重新运行程序
!
goto End
:End
echo.
echo
程序执行结束
!
3.
备份结果
-
-
-
-
-
-
-
-
-
上一篇:Tcpdump的安装
下一篇:amanda安装