找了一些資料,終於測試出來OK了~^^....快記下來以免忘記。
1.hotcopy方式:(轉載自 http://www.the8m.com/blog/article/chengxua/visualsvnback.html )
simpleBackup.bat要放在svn版本庫的根目錄下。
SVN_backup.bat可隨意放。==============================================
SVN_backup.bat內容:
echo off
rem Subversion的安裝目錄 //如=>"C:\Program Files\VisualSVN Server"
set SVN_HOME="C:\Program Files\VisualSVN Server"
rem 所有版本庫的父目錄 //庫目錄,如=>d:\svn
set SVN_ROOT=C:\Repositories
set SVN_ROOT_RUN="C:\Repositories"
rem 備份的目錄(如:C:\svnbak)
set BACKUP_SVN_ROOT=C:\svnbak
set BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%date:~0,4%_%date:~5,2%_%date:~8,2%
if exist %BACKUP_DIRECTORY% goto checkBack
echo 建立備份目錄%BACKUP_DIRECTORY%>>%BACKUP_SVN_ROOT%/backup.log
md %BACKUP_DIRECTORY%
rem 驗證目錄是否為版本庫,如果是則取出名稱備份
for /r %SVN_ROOT% %%I in (.) do @if exist "%%I/conf/svnserve.conf" %SVN_ROOT_RUN%\simplebackup.bat "%%~fI" %%~nI
goto end
:checkBack
echo 備份目錄%BACKUP_DIRECTORY%已經存在,請清空。
goto end:end
=================================================
simpleBackup.bat 內容:
@echo 正在備份版本庫%1......
%SVN_HOME%\bin\svnadmin hotcopy %1 %BACKUP_DIRECTORY%\%2
@echo 版本庫%1成功備份到了%2!==================================================
2.Dump方式:(轉載自 http://www.jtben.com/document/644303 )
使用方法:
1、将三个文件拷贝到版本仓库目录下
2、如果使用是Visual SVN的版本管理器。
需要加入2个环境变量否则无法识别svnadmin命令
SVN_HOME=C:\Program Files\VisualSVN Server (注:Visual svn安装目录)
Path追加 %SVN_HOME%\bin
3、分别根据需要运行相关批处理
4、还原时需要将7z压缩文件进行解压为*.bin文件
同时版本仓库中不得有任何的子目录
DumpAll.bat內容:
@ECHO OFF
::====================
::Author : Zealic
::Version : 1.00
::FileName : DumpAll.bat
::Summary : Dump 當前目錄的所有SVN版本庫,腳本將備份當前目錄下的所有SVN版本庫,
:: 本腳本依賴於 7za.exe 程序,請到下述連接下載程序
:: http://downloads.sourceforge.net/sevenzip/7za457.zip
::Update : 2008-11-26
::====================
SET SVN_HOME="C:\Program Files\VisualSVN Server"
SET VAR_DATE=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
dir /B /AD > DIRS
IF EXIST DUMP_FILES (
DEL /Q DUMP_FILES
)
FOR /F %%i IN (DIRS) DO (
SET REPOS_NAME=%%i
CALL :DUMP_REPOS
)
SET REPOS_NAME=
ECHO.
ECHO Compressing dump files...
7za a Repos_%VAR_DATE%.7z *.bin
ECHO Delete dump files...
FOR /F %%i IN (DUMP_FILES) DO (
DEL /Q %%i
)
DEL /Q DIRS
DEL /Q DUMP_FILES
ECHO Successed.
GOTO :EOF
::==== Functions ====
:DUMP_REPOS
SET DUMP_FILE=%REPOS_NAME%.bin
ECHO Dumping repository ^"%REPOS_NAME%^" ...
%SVN_HOME%\bin\svnadmin dump ^"%REPOS_NAME%^" -q > %DUMP_FILE%
IF %errorlevel%==0 (
ECHO %DUMP_FILE% >> DUMP_FILES
) ELSE (
DEL /Q %DUMP_FILE%
ECHO Dump ^"%REPOS_NAME%^" failed.
)
SET DUMP_FILE=
ECHO.
============================================ LoadAll.bat內容:(還沒試過)
@ECHO OFF
::====================
::Author : Zealic
::Version : 1.00
::FileName : LoadAll.bat
::Summary : Load Svn 版本庫,確保當前目錄為沒有任何子目錄,
:: 腳本將搜索當前目錄下的 *.bin 文件,自動為其建立版本庫並 Load Dump文件。
::Update : 2008-11-26
::====================
SET SVN_HOME="C:\Program Files\VisualSVN Server"
SET VAR_IS_EMPTY_DIR=TRUE
dir /B /AD > DIRS
FOR /F %%i IN (DIRS) DO (
SET VAR_IS_EMPTY_DIR=FALSE
)
DEL /Q DUMP_FILES
IF "%VAR_IS_EMPTY_DIR%"=="FALSE" (
ECHO Error : Current directory is not empty.
GOTO :EOF
)
SET VAR_IS_EMPTY_DIR=
dir /B /A-D *.bin > DUMP_FILES
IF "%errorlevel%"=="0" (
ECHO Finded dump file.
) ELSE (
ECHO Error : Can not find dump file.
GOTO :EOF
)
FOR /F %%i IN (DUMP_FILES) DO (
SET REPOS_FILE=%%i
CALL :LOAD_REPOS
)
SET REPOS_FILE=
DEL /Q DUMP_FILES
ECHO Successed.
GOTO :EOF
::==== Functions ====
:LOAD_REPOS
SET REPOS_NAME=%REPOS_FILE:~0,-4%
mkdir %REPOS_NAME%
ECHO Loading repository ^"%REPOS_NAME%^" ...
%SVN_HOME%\bin\svnadmin create %REPOS_NAME%
%SVN_HOME%\bin\svnadmin load -q %cd%\%REPOS_NAME% < %REPOS_FILE%
IF %errorlevel%==0 (
ECHO %DUMP_FILE% >> DUMP_FILES
) ELSE (
RMDIR /Q %REPOS_NAME%
ECHO Load ^"%REPOS_NAME%^" failed.
)
SET REPOS_NAME=
ECHO.
====================================================
沒有留言:
張貼留言