欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Svn在Windows下实现自动全量增量备份和异地备份(共13页).docx

    • 资源ID:8538580       资源大小:163.51KB        全文页数:13页
    • 资源格式: DOCX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Svn在Windows下实现自动全量增量备份和异地备份(共13页).docx

    精选优质文档-倾情为你奉上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=192.168.1.22set 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 FilesWinRAR"REM 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=192.168.1.22set 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 FilesWinRAR"REM 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 %REPOS_BACKUP_ROOT% goto Error:还原所有版本库echo =%date% %time:0,8%:执行版本库执行还原操作 = >> %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 > fileName.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%jconfsvnserve.conf (%SVN_CMD%svnadmin create %REPOS_ROOT%j):还原备份%SVN_CMD%svnadmin load %REPOS_ROOT%j < %REPOS_BACKUP_ROOT%h%iecho %j: %k-%l >> %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:End 专心-专注-专业

    注意事项

    本文(Svn在Windows下实现自动全量增量备份和异地备份(共13页).docx)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开