ding112
1/20/2015 - 2:39 AM

svnadmin dump 命令全量备份SVN

svnadmin dump 命令全量备份SVN

e:
cd E:\SVN\Repositories
dumpall.bat F:\backup\svn
pause
@ECHO OFF
SET DUMPTO_DIR="."
if  not "%1" == ""  (
	echo Back up all to %1
	SET DUMPTO_DIR=%1
)		

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.
IF EXIST %DUMPTO_DIR%\Repos_%VAR_DATE%.zip (
	echo Delete existing compressed dump file
	del %DUMPTO_DIR%\Repos_%VAR_DATE%.zip
)
ECHO Compressing dump files...
::==== 压缩文件路径 ====
7z a %DUMPTO_DIR%\Repos_%VAR_DATE%.zip %DUMPTO_DIR%\*.bin 

ECHO Delete dump files...
FOR /F %%i IN (DUMP_FILES) DO (
  DEL /Q %DUMPTO_DIR%\%%i
)

DEL /Q DIRS
DEL /Q DUMP_FILES
SET DUMPTO_DIR= 

ECHO Successed.
GOTO :EOF

::==== Functions ====
:DUMP_REPOS
SET DUMP_FILE=%REPOS_NAME%.bin
ECHO Dumping repository ^"%REPOS_NAME%^" ...
svnadmin dump ^"%REPOS_NAME%^" -q > %DUMPTO_DIR%/%DUMP_FILE%
IF %errorlevel%==0 (
  ECHO %DUMP_FILE% >> DUMP_FILES
) ELSE (
  DEL /Q %DUMP_FILE%
  ECHO Dump ^"%REPOS_NAME%^" failed.
)
SET DUMP_FILE=

ECHO.