1、SVN备份还原操作手册范本SVN备份还原操作手册一、 命令备份1. svnadmin dump全量备份进入SVN服务端安装目录下运行svnadmin dump命令(C:/Repositories/QA为SVN库中项目目录,full.svn.bak为备份文件名)2. svnadmin dump增量备份(以增量把版本库8转存到svn.bak.1,-r -revision :指定版本;-incremental :以增量方式进行转存)3. svnadmin dump还原(先创建一个新的版本库,再还原完全备份,有增量备份的再还原增量备份)(进入SVN服务端安装目录下调用命令创建test测试库)4. 运行
2、svnadmin load还原命令(增量还原同全量还原)二、 脚本备份(针对项目库备份)1. svnadmin dump全量备份脚本(在SVN库中添加全量备份脚本backup.bat,需要安装对应的压缩工具)2. 脚本容rem Subversion的安装目录set SVN_HOME=C:ProgramFilesVisualSVNServerrem 所有版本库的父目录set SVN_ROOT=C:Repositoriesrem 备份的目录set BACKUP_SVN_ROOT=C:bakrem 创建存放版本库的临时目录set BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%d
3、ate:0,4%date:5,2%date:8,2%if exist %BACKUP_DIRECTORY% goto checkBackecho %date:0,4%date:5,2%date:8,2%:建立备份目录%BACKUP_DIRECTORY%SVN_ROOT%/backup.logrem SVN 版本库自动备份时需要rem创建备份目录md %BACKUP_DIRECTORY%cd C:Program FilesVisualSVN Serverbinsvnadmin.exe dump C:RepositoriesQA %BACKUP_DIRECTORY%FINANCE%date:0,1
4、0%rem 验证目录是否为版本库,如果是则取出名称备份rem for /r%SVN_ROOT%I in(.)doifexist%Iconfsvnserve.confcall%SVN_ROOT%simpleBackup.bat%fI%nIecho 开始压缩版本库,请不要中止. rem %SVN_ROOT%7z.exea-tzip%BACKUP_SVN_ROOT%date:0,4%date:5,2%date:8,2%.zip%BACKUP_DIRECTORY%*-rnulecho 版本库压缩完成!rem 清除临时创建备份目录rem rd/s/q%BACKUP_DIRECTORY%goto end:
5、checkBackecho 备份目录%BACKUP_DIRECTORY%已经存在,请清空。goto end:endecho on3. 运行脚本backup.bat,会生成备份文件4. 备份还原将备份文件考到SVN服务器安装目录下,运行SVN还原命令三、 脚本备份(针对SVN仓库备份)1. svnadmin dump全量备份脚本(在SVN库中添加全量备份脚本DumpAll.bat)2. 脚本容:Beginecho offsetlocal enabledelayedexpansionecho 正在准备备份所有版本库echo.:设置SVN命令目录set SVN_CMD=C:Program Files
6、VisualSVN Serverbin:设置所有版本库根目录set REPOS_ROOT=C:Repositories:设置所有版本库备份根目录set REPOS_BACKUP_ROOT=C:RepositoriesBackUpif not exist %REPOS_BACKUP_ROOT% mkdir %REPOS_BACKUP_ROOT%:获取LastRevisions目录set REPOS_LAST_REVERSION_DIRECTORY=%REPOS_BACKUP_ROOT%LastRevisionsif not exist %REPOS_LAST_REVERSION_DIRECTOR
7、Y% goto Error1:设置所有版本库备份目录set BACKUP_DIRECTORY=%REPOS_BACKUP_ROOT%date:0,10%.dmpset BACKUP_DIRECTORY=%BACKUP_DIRECTORY:/=-%if exist %BACKUP_DIRECTORY% goto Error2mkdir %BACKUP_DIRECTORY%:设置用户权限信息备份目录set REPOS_USER_INFO_DIRECTORY=%BACKUP_DIRECTORY%UserInfoif not exist %REPOS_USER_INFO_DIRECTORY% mkdi
8、r %REPOS_USER_INFO_DIRECTORY%:设置LastRevisions备份目录set REPOS_LAST_REVERSION_BACKUP_DIRECTORY=%BACKUP_DIRECTORY%LastRevisionsif not exist %REPOS_LAST_REVERSION_BACKUP_DIRECTORY% mkdir %REPOS_LAST_REVERSION_BACKUP_DIRECTORY%:备份所有版本库:i-版本库、j-版本库最新版本号、k-上次完全备份时版本库的版本号echo =%date% %time:0,8%:执行全部版本库备份 By 静
9、.= %REPOS_BACKUP_ROOT%BackUp.logecho 备份的版本库版本信息如下: %REPOS_BACKUP_ROOT%BackUp.log:读取版本库根目录下每个文件夹,并判断其是否是一个版本库for /r %REPOS_ROOT% %i in (.) do if exist %iconfsvnserve.conf (:将当前版本库的最新版本信息写入tmp文件%SVN_CMD%svnlook youngest %fi %ni_last_revision.tmp:取出当前版本库的最新版本信息,判断其是否大于0,是则进行处理for /f %j in (%ni_last_rev
10、ision.tmp) do if %j gtr 0 (:判断以前是否存在该版本库的版本信息,存在说明以前备份过,需要基于其进行备份;否则对该版本库进行全新备份if exist %REPOS_LAST_REVERSION_DIRECTORY%ni_last_revision.txt (:读取该版本库上次备份时保存的版本信息,如果小于当前版本信息则进行处理for /f %k in (%REPOS_LAST_REVERSION_DIRECTORY%ni_last_revision.txt) do if %k lss %j (echo.echo 开始备份版本库%ni:取得该版本库本次备份的起始版本号s
11、et version=%kset /a version=!version!+1:增量备份版本库%SVN_CMD%svnadmin dump -deltas %fi -revision !version!:head -incremental %BACKUP_DIRECTORY%ni-!version!-%j.dmpecho %ni: !version!-%j %REPOS_BACKUP_ROOT%BackUp.logecho 版本库%ni已经成功备份到%BACKUP_DIRECTORY%ni-!version!-%j.dmp!) else (echo.echo 开始备份版本库%ni:全量备份版本
12、库%SVN_CMD%svnadmin dump -deltas %fi %BACKUP_DIRECTORY%ni-0-%j.dmpecho %ni: 0-%j %REPOS_BACKUP_ROOT%BackUp.logecho 版本库%ni已经成功备份到%BACKUP_DIRECTORY%ni-0-%j.dmp!):将本次版本库备份时的最新版本信息写入文件保存echo %j %REPOS_LAST_REVERSION_DIRECTORY%ni_last_revision.txtecho %j %REPOS_LAST_REVERSION_BACKUP_DIRECTORY%ni_last_revi
13、sion.txt):删除临时文件del %ni_last_revision.tmp)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:Error1echo.echo
14、 提示:echo 上次备份保存的%REPOS_LAST_REVERSION_DIRECTORY%文件夹不存在,请确认后从上次备份中拷贝LastReversions到%REPOS_BACKUP_ROOT%目录,重新运行程序;echo 或者,不基于上次备份重新执行备份!echo 重新备份?(Y/N)set /p input=if %input%=Y (mkdir %REPOS_LAST_REVERSION_DIRECTORY%goto Begin) else (goto End):Error2echo.echo 备份目录已经存在,请确认后删除该目录,重新运行程序!goto End:Endecho.
15、echo 程序执行结束!3. 备份结果4. 还原脚本(在SVN库中添加全量备份脚本LoadBackUp.bat):LoadBackUp.batecho offecho 正在准备还原所有版本库echo.:设置SVN命令目录set SVN_CMD=C:Program FilesVisualSVN Serverbin:设置所有版本库根目录set REPOS_ROOT=C:Repositories:设置所有版本库备份根目录set REPOS_BACKUP_ROOT=C:RepositoriesBackUpif not exist %REPOS_BACKUP_ROOT% goto Error:还原所有版
16、本库echo =%date% %time:0,8%:执行版本库执行还原操作 By 静.= %REPOS_BACKUP_ROOT%SvnLoad.logecho 还原的版本库版本信息如下: %REPOS_BACKUP_ROOT%SvnLoad.log:将所有保存版本库备份的文件夹名写入tmpdir /b %REPOS_BACKUP_ROOT%*.dmp folderName.tmp:依次操作tmp文件中包含的文件夹for /f %h in (folderName.tmp) do (:将所有版本库文件名写入tmpdir /b /a-d %REPOS_BACKUP_ROOT%h*.dmp fileN
17、ame.tmp:依次操作tmp文件中包含的备份文件for /f %i in (fileName.tmp) do (:处理备份文件名,以取得版本库名和相应的版本号 for /f tokens=1,2* delims=- %j in (%ni) do (echo.echo 开始还原版本库%REPOS_BACKUP_ROOT%h%j-%k-%l:版本库根目录不存在和版本库名相同名字的文件夹则创建一个if not exist %REPOS_ROOT%j (mkdir %REPOS_ROOT%j ):版本库根目录中该文件夹不是版本库,则创建一个if not exist %REPOS_ROOT%jconf
18、svnserve.conf (%SVN_CMD%svnadmin create %REPOS_ROOT%j):还原备份%SVN_CMD%svnadmin load %REPOS_ROOT%j %REPOS_BACKUP_ROOT%SvnLoad.logecho 版本库%REPOS_BACKUP_ROOT%h%j-%k-%l还原成功!):删除临时文件del fileName.tmpdel folderName.tmpecho.echo 全部版本库还原成功!goto end:Errorecho.echo 版本库备份目录%REPOS_BACKUP_ROOT%不存在,请确认后重新运行程序!goto End:EndPause四、 添加自动备份1. 添加任务计划2. 设置自动备份选择备份脚本目录文件和用户名、密码:设置备份机制:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1