Svn在Windows下实现自动全量增量备份和异地备份.docx_第1页
Svn在Windows下实现自动全量增量备份和异地备份.docx_第2页
Svn在Windows下实现自动全量增量备份和异地备份.docx_第3页
Svn在Windows下实现自动全量增量备份和异地备份.docx_第4页
Svn在Windows下实现自动全量增量备份和异地备份.docx_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SVN在Windows下实现自动全量增量备份和异地备份1 SVN备份介绍1.1 SVN备份内容SVN在Windows下的自动备份实现,包括:1) SVN目录的全备份(1周或1个月备份1次,由windows计划来调度执行);2) SVN增量备份(每日备份1次,由windows计划来调度执行);1.2 SVN备份流程上述2类备份分别进行的流程如下:1) 通过windows定时任务功能,调度进行备份、压缩、FTP上传功能的bat文件;2) 将自动备份成按每日日期.dmp备份到SVN本机的其他磁盘空间中,分全备份和增量备份;3) 启动ftp上传命令,将备份的rar包立即上传在异地服务器上。异地服务器需提前架好ftp服务器并建立好相关上传目录,建议使用用FileZilla_Server、serverU或者简单ftp软件进行搭建。4) 整个上传过程,详细记录备份、压缩、FTP上传各步骤详细日志,随时可以查阅每次备份记录的详细情况。1.3 SVN还原功能可以进行还原所有版本库2 SVN备份BAT设计1.1 全备份BAT1)SVN的全备份,AllBackUp.bat:Beginecho offsetlocal enabledelayedexpansionecho 正在准备备份所有版本库echo.:设置SVN命令目录set SVN_CMD=E:VisualSVN Serverbin:设置所有版本库根目录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%.dmpset BACKUP_DIRECTORY=%BACKUP_DIRECTORY:/=-%rem if exist %BACKUP_DIRECTORY% goto Error2rem mkdir %BACKUP_DIRECTORY%if not exist %BACKUP_DIRECTORY% mkdir %BACKUP_DIRECTORY%:设置用户权限信息备份目录set REPOS_USER_INFO_DIRECTORY=%BACKUP_DIRECTORY%UserInfoif not exist %REPOS_USER_INFO_DIRECTORY% mkdir %REPOS_USER_INFO_DIRECTORY%:备份所有版本库:i-版本库、j-版本库最新版本号、k-上次完全备份时版本库的版本号echo =%date% %time:0,8%:执行全部全量备份版本库.= %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_revision.tmp) do if %j gtr 0 (echo.echo 开始备份版本库%ni:全量备份版本库%SVN_CMD%svnadmin dump -deltas %fi %BACKUP_DIRECTORY%ni-0-%j.dmpecho %time:0,8% %ni: 0-%j %REPOS_BACKUP_ROOT%BackUp.logecho 版本库%ni已经成功备份到%BACKUP_DIRECTORY%ni-0-%j.dmp!):删除临时文件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 - %REPOS_BACKUP_ROOT%BackUp.logecho.echo 用户权限信息备份成功!echo %time:0,8% 用户权限信息备份成功! %REPOS_BACKUP_ROOT%BackUp.logecho.echo 全部版本库备份成功!echo %time:0,8% 全部版本库备份成功! %REPOS_BACKUP_ROOT%BackUp.logAllBackupByFtpgoto end:Error2echo.echo 备份目录已经存在,请确认后删除该目录,重新运行程序!goto End:Endecho.echo 程序执行结束!2)SVN的全备份进行FTP上传,AllBackupByFtp.batecho offREM =设置区Start=set ftpUser=svnset ftpPass=svnbackupset ftpIP=2set ftpPort=2016REM 指定从FTP下载下来的文件存放到本机哪个目录set ftpFolder=/全备份REM 本地需要备份的根目录set SvnBackupRoot=F:SvnBackup全备份REM 本地需要打压缩包的备份目录(今天备份文件夹2016-01-01.dmp)set SvnBackupFolder=%SvnBackupRoot%date:0,10%.dmpREM 需要压缩成的文件路径及文件名(今天备份上传文件2016-01-01.dmp.rar)set rarToFilePath=%SvnBackupFolder%.rarREM RAR执行文件的路径set rarExePath=C:Program FilesWinRARREM RAR执行文件的路径set bakupLogFilePath=%SvnBackupRoot%BackUp.logREM FTP命令执行文件缓存set ftpFile=%cd%TempFTP.txt%ftpFile% ( echo,open %ftpIP% %ftpPort% echo,%ftpUser% echo,%ftpPass% echo cd %ftpFolder% echo prompt off echo bin echo put %rarToFilePath% echo put %bakupLogFilePath% echo bye)set Path=%Path%;%rarExePath%set logFilePath=%SvnBackupRoot%ftpUp.logREM =设置区End =echo =%date% 执行异地版本库全量备份开始= %logFilePath%if not exist %SvnBackupFolder% goto Error1echo %time:0,8% 备份压缩开始. %logFilePath%WinRAR.exe a -ep1 -k -r -s -ibck %rarToFilePath% %SvnBackupFolder%echo %time:0,8% 备份压缩成功,压缩的文件路径为:%rarToFilePath% %logFilePath%echo %time:0,8% 备份压缩继续上传FTP开始. %logFilePath%ftp -v -i -s:%ftpFile%echo %time:0,8% 上传FTP成功,上传FTP目录为:%ftpFolder% %logFilePath%del /q /s /f %rarToFilePath%echo. %logFilePath%goto end:Error1echo.echo %time:0,8% 提示: 需要进行压缩打包的备份文件夹%SvnBackupFolder%不存在,请确认SVN是否本地备份完成! %logFilePath%echo %time:0,8% 备份失败! %logFilePath%echo. %logFilePath%echo 提示:echo 需要进行压缩打包的备份文件夹%SvnBackupFolder%不存在,请确认SVN是否本地备份完成!:Endecho.echo 程序执行结束!1.2 增量备份BAT1)SVN数据库的增量备份,IncreBackUp.bat:Beginecho offsetlocal enabledelayedexpansionecho 正在准备备份所有版本库echo.:设置SVN命令目录set SVN_CMD=E:VisualSVN Serverbin:设置所有版本库根目录set REPOS_ROOT=D:Repositories:设置所有版本库备份根目录set REPOS_BACKUP_ROOT=F:SvnBackup增量备份if not exist %REPOS_BACKUP_ROOT% mkdir %REPOS_BACKUP_ROOT%:获取LastRevisions目录set REPOS_LAST_REVERSION_DIRECTORY=%REPOS_BACKUP_ROOT%LastRevisionsrem if not exist %REPOS_LAST_REVERSION_DIRECTORY% goto Error1 if not exist %REPOS_LAST_REVERSION_DIRECTORY% mkdir %REPOS_LAST_REVERSION_DIRECTORY%:设置所有版本库备份目录set BACKUP_DIRECTORY=%REPOS_BACKUP_ROOT%date:0,10%.dmpset BACKUP_DIRECTORY=%BACKUP_DIRECTORY:/=-%rem if exist %BACKUP_DIRECTORY% goto Error2rem mkdir %BACKUP_DIRECTORY%if not exist %BACKUP_DIRECTORY% mkdir %BACKUP_DIRECTORY%:设置用户权限信息备份目录set REPOS_USER_INFO_DIRECTORY=%BACKUP_DIRECTORY%UserInfoif not exist %REPOS_USER_INFO_DIRECTORY% mkdir %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%:执行全部版本库备份.= %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_revision.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:取得该版本库本次备份的起始版本号set 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:全量备份版本库%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_revision.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 全部版本库备份成功!IncreBackupByFtpgoto end:Error1echo.echo 提示: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.echo 程序执行结束!2)SVN数据的增量备份的FTP上传,IncreBackupByFtp.batecho offREM =设置区Start=set ftpUser=svnset ftpPass=svnbackupset ftpIP=2set ftpPort=2016REM 指定从FTP下载下来的文件存放到本机哪个目录set ftpFolder=/增量备份REM 本地需要备份的根目录set SvnBackupRoot=F:SvnBackup增量备份REM 本地需要打压缩包的备份目录(今天备份文件夹2016-01-01.dmp)set SvnBackupFolder=%SvnBackupRoot%date:0,10%.dmpREM 需要压缩成的文件路径及文件名(今天备份上传文件2016-01-01.dmp.rar)set rarToFilePath=%SvnBackupFolder%.rarREM RAR执行文件的路径set rarExePath=C:Program FilesWinRARREM RAR执行文件的路径set bakupLogFilePath=%SvnBackupRoot%BackUp.logREM FTP命令执行文件缓存set ftpFile=%cd%TempFTP.txt%ftpFile% ( echo,open %ftpIP% %ftpPort% echo,%ftpUser% echo,%ftpPass% echo cd %ftpFolder% echo prompt off echo bin echo put %rarToFilePath% echo put %bakupLogFilePath% echo bye)set Path=%Path%;%rarExePath%set logFilePath=%SvnBackupRoot%ftpUp.logREM =设置区End =echo =%date% 执行异地版本库增量备份开始.= %logFilePath%if not exist %SvnBackupFolder% goto Error1echo %time:0,8% 备份压缩开始. %logFilePath%WinRAR.exe a -ep1 -k -r -s -ibck %rarToFilePath% %SvnBackupFolder%echo %time:0,8% 备份压缩成功,压缩的文件路径为:%rarToFilePath% %logFilePath%echo %time:0,8% 备份压缩继续上传FTP开始. %logFilePath%ftp -v -i -s:%ftpFile%echo %time:0,8% 上传FTP成功,上传FTP目录为:%ftpFolder% %logFilePath%del /q /s /f %rarToFilePath%echo. %logFilePath%goto end:Error1echo.echo %time:0,8% 提示: 需要进行压缩打包的备份文件夹%SvnBackupFolder%不存在,请确认SVN是否本地备份完成! %logFilePath%echo %time:0,8% 备份失败! %logFilePath%echo. %logFilePath%echo 提示:echo 需要进行压缩打包的备份文件夹%SvnBackupFolder%不存在,请确认SVN是否本地备份完成!:Endecho.echo 程序执行结束!3 SVN还原BAT设计SVN的还原LoadBackUp.batecho offecho 正在准备还原所有版本库echo.:设置SVN命令目录set SVN_CMD=E:VisualSVN Serverbin:设置所有版本库根目录set REPOS_ROOT=D:Repositories:设置所有版本库备份根目录set REPOS_BACKUP_ROOT=F:SvnBackup增量备份if not exist %REPO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论