SVN在Windows下实现自动全量增量备份和异地备份
1SVN备份介绍
1.1SVN备份内容
SVN在Windows下的自动备份实现,包括:
1)SVN目录的全备份(1周或1个月备份1次,由windows计划来调度执行);
2)SVN增量备份(每日备份1次,由windows计划来调度执行);
1.2SVN备份流程
上述2类备份分别进行的流程如下:
1)通过windows定时任务功能,调度进行备份、压缩、FTP上传功能的bat文件;
2)将自动备份成按每日日期.dmp备份SVN本机的其他磁盘空间中,分全备份和增量备份;
3)启动ftp上传命令,将备份的rar包立即上传在异地服务器上。异地服务器需提前架好ftp服务器并建立好相关上传目录,建议使用用FileZilla_Server、serverU或者简单ftp软件进行搭建
4)整个上传过程,详细记录备份、压缩、FTP上传各步骤详细日志,随时可以查阅每次备份记录的详细情况。
1.3SVN还原功能
可以进行还原所有版本库
2SVN备份BAT设计
1.4全备份BAT
1)SVN的全备份,AllBackUp.bat
:Begin
@echo off
setlocal enabledelayedexpansion
echo 正在准备备份所有版本库……
echo.
::设置SVN命令目录
set SVN_CMD="E:\VisualSVN Server\bin"
::设置所有版本库根目录
set REPOS_ROOT=D:\Repositories
::设置所有版本库备份根目录
set REPOS_BACKUP_ROOT=F:\[SvnBackup]\全备份
if not exist %REPOS_BACKUP_ROOT% mkdir %REPOS_BACKUP_ROOT%
::设置所有版本库备份目录
set BACKUP_DIRECTORY=%REPOS_BACKUP_ROOT%\%date:~0,10%.dmp
set BACKUP_DIRECTORY=%BACKUP_DIRECTORY:/=-%
truncated filerem if exist %BACKUP_DIRECTORY% goto Error2
rem mkdir %BACKUP_DIRECTORY%
if not exist %BACKUP_DIRECTORY% mkdir %BACKUP_DIRECTORY%
::设置用户权限信息备份目录
set REPOS_USER_INFO_DIRECTORY=%BACKUP_DIRECTORY%\UserInfo
if not exist %REPOS_USER_INFO_DIRECTORY% mkdir %REPOS_USER_INFO_DIRECTORY%
::备份所有版本库
::i->版本库、j->版本库最新版本号、k->上次完全备份时版本库的版本号
echo ===================%date% %time:~0,8%:执行全部全量备份版本库.=================== >> %REPOS_BACKUP_ROOT%\BackUp.log
echo 备份的版本库版本信息如下: >> %REPOS_BACKUP_ROOT%\BackUp.log
::读取版本库根目录下每个文件夹,并判断其是否是一个版本库
for /r %REPOS_ROOT% %%i in (.) do if exist %%i\f (
    ::将当前版本库的最新版本信息写入tmp文件
    %SVN_CMD%\svnlook youngest %%~fi > %%~ni_p
    ::取出当前版本库的最新版本信息,判断其是否大于0,是则进行处理
    for /f %%j in (%%~ni_p) do if %%j gtr 0 (   
        echo.
        echo 开始备份版本库%%~ni……
        ::全量备份版本库
        %SVN_CMD%\svnadmin dump --deltas %%~fi > %BACKUP_DIRECTORY%\%%~ni-0-%%j.dmp   
        echo %time:~0,8%  %%~ni: 0-%%j >> %REPOS_BACKUP_ROOT%\BackUp.log
        echo 版本库%%~ni已经成功备份到%BACKUP_DIRECTORY%\%%~ni-0-%%j.dmp!
    )
    ::删除临时文件
    del %%~ni_p
)
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 ---------------------------------->> %REPOS_BACKUP_ROOT%\BackUp.log
echo.
echo 用户权限信息备份成功!
echo %time:~0,8%  用户权限信息备份成功! >> %REPOS_BACKUP_ROOT%\BackUp.log
echo.
echo 全部版本库备份成功!
echo %time:~0,8%  全部版本库备份成功! >> %REPOS_BACKUP_ROOT%\BackUp.log
AllBackupByFtp
goto end
:Error2
echo.
echo 备份目录已经存在,请确认后删除该目录,重新运行程序!
goto End
:End
echo.
echo 程序执行结束!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。