Svn在Windows下实现自动全量增量备份和异地备份.docx
- 文档编号:14786664
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:15
- 大小:43.98KB
Svn在Windows下实现自动全量增量备份和异地备份.docx
《Svn在Windows下实现自动全量增量备份和异地备份.docx》由会员分享,可在线阅读,更多相关《Svn在Windows下实现自动全量增量备份和异地备份.docx(15页珍藏版)》请在冰点文库上搜索。
Svn在Windows下实现自动全量增量备份和异地备份
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本机的其他磁盘空间中,分全备份和增量备份;
史件的S?
Sgtt)*(O⅛SQUTHcD⅞?
EftilU
0后IS•?
文件疾∏>
苗址⑪IJJFA[SvrJfcCkuj]Vβ≤⅞t⅛
SrntJ^f∣∙Λfi¼
Jq逢」新如夹α蒔这个文W⅛κ布剁
W族b
¢¢2ax?
:
2016啊月24日
33
gw:
-
Ba)ImE匚祜16YfM3⅜ιp
LJa)IS-0β-15ħpL2j201β-0β-17hp」2 O20Ie^e-20⅛ιpL32OL6F8V2.Iip L□∑0lβ-^8-23.IlPlZ0l6-0e-24.环 QL I»«Effl Zl13MU 文件夹 文件夹 3JS文件 ZIBuK? 文件 20121223302016-6-1323X)2016-fl-1523笊2016-€-1723302016-fi-1823X)2016-β-1923302Ot6-β-2O23502O16-β-238.522016-6-2325.∞2016-6-24230020l6-β-lZHza2016-«-2423002016-β-242300 3)启动ftp上传命令,将备份的rar包立即上传在异地服务器上。 异地服务器需提前架好ftp服务器并建立好相关上传目录,建议使用用、serverU或者简单ftp软件进行搭建。 4)整个上传过程,详细记录备份、压缩、FTP上传各步骤详细日志,随时可以查阅每次备份记录的详细情况。 1.3SVN还原功能 可以进行还原所有版本库 2SVN备份BAT设计 1.1全备份BAT 1)SVN的全备份,AllBackUp.bat : Begin @echooffsetlocalenabledelayedexpansionecho正在准备备份所有版本库⋯⋯ echo. : : 设置SVN命令目录 setSVN_CMD="E: \VisualSVNServer\bin" : : 设置所有版本库根目录 setREPOS_ROOT=D: \Repositories : : 设置所有版本库备份根目录全备份 ifnotexist%REPOS_BACKUP_ROOT%mkdir%REPOS_BACKUP_ROOT% : : 设置所有版本库备份目录 setBACKUP_DIRECTORY=%REPOS_BACKUP_ROOT%\%date: ~0,10%.dmpsetBACKUP_DIRECTORY=%BACKUP_DIRECTORY: /=-% remifexist%BACKUP_DIRECTORY%gotoError2remmkdir%BACKUP_DIRECTORY%ifnotexist%BACKUP_DIRECTORY%mkdir%BACKUP_DIRECTORY%: : 设置用户权限信息备份目录 TORY% setREPOS_USER_INFO_DIRECTORY=%BACKUP_DIRECTORY%\UserInfo ifnotexist%REPOS_USER_INFO_DIRECTORY%mkdir%REPOS_USER_INFO_DIREC : : 备份所有版本库 : : i->版本库、j->版本库最新版本号、k->上次完全备份时版本库的版本号 echo===================%date%%time: ~0,8%执: 行全部全量备份版本库.===================>>%REPOS_BACKUP_ROOT%\BackUp.logecho备份的版本库版本信息如下: >>%REPOS_BACKUP_ROOT%\BackUp.log : : 读取版本库根目录下每个文件夹,并判断其是否是一个版本库 for/r%REPOS_ROOT%%%iin(.)doifexist%%i\conf\svnserve.conf( : : 将当前版本库的最新版本信息写入tmp文件 %SVN_CMD%\svnlookyoungest%%~fi>%%~ni_last_revision.tmp: : 取出当前版本库的最新版本信息,判断其是否大于0,是则进行处理 for/f%%jin(%%~ni_last_revision.tmp)doif%%jgtr0( echo. echo开始备份版本库%%~n⋯i⋯ : : 全量备份版本库 %SVN_CMD%\svnadmindump--deltas%%~fi>%BACKUP_DIRECTORY%\%%~ni-0-%%j.dmp echo%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.log echo. echo用户权限信息备份成功! og echo%time: ~0,8%用户权限信息备份成功! >>%REPOS_BACKUP_ROOT%\BackUp.lecho. echo全部版本库备份成功! echo%time: ~0,8%全部版本库备份成功! >>%REPOS_BACKUP_ROOT%\BackUp.log AllBackupByFtpgotoend: Error2 echo. echo备份目录已经存在,请确认后删除该目录,重新运行程序! gotoEnd: Endecho. echo程序执行结束! 2)SVN的全备份进行FTP上传,AllBackupBy @echooff REM=====设=置区Start================================setsetset.1.22set REM指定从FTP下载下来的文件存放到本机哪个目录set全备份 REM本地需要备份的根目录 全备份 REM本地需要打压缩包的备份目录(今天备份文件夹2016-01-01.dmp)setSvnBackupFolder=%SvnBackupRoot%\%date: ~0,10%.dmp REM需要压缩成的文件路径及文件名(今天备份上传文件2016-01-01.dmp.rar)setrarTo REMRAR执行文件的路径setrarExePath="C: \ProgramFiles\WinRAR\"REMRAR执行文件的路径setbakupLog\BackUp.log REMFTP命令执行文件缓存set\Temp >"%"(echo,open%%echo,%echo,%echocd"%"echopromptoffechobinechoput%rarToechoput%bakupLogechobye )setPath=%Path%;%rarExePath%setlog\ REM=====设=置区End================================ echo===================%date%执行异地版本库全量备份开始=================>>%logifnotexist%SvnBackupFolder%gotoError1echo%time: ~0,8%备份压缩开始...>>%log a-ep1-k-r-s-ibck%rarTo%SvnBackupFolder% echo%time: ~0,8% echo%time: ~0,8% 备份压缩成功,压缩的文件路径为: %rarTo>>%log备份压缩继续上传FTP开始...>>%log -i-s: "%" echo%time: ~0,8%上传FTP成功,上传FTP目录为: %>>%logdel/q/s/f%rarToecho.>>%loggotoend Error1 echo. echo%time: ~0,8%提示: 需要进行压缩打包的备份文件夹%SvnBackupFolder%不存在,请确认SVN是否本地备份完成! >>%log echo%time: ~0,8%备份失败! >>%log echo.>>%log echo提示: echo需要进行压缩打包的备份文件夹%SvnBackupFolder%不存在,请确认SVN是否本地备份完成! Endecho.echo程序执行结束! 1.2增量备份BAT 1)SVN数据库的增量备份,IncreBackUp.bat: Begin@echooffsetlocalenabledelayedexpansionecho正在准备备份所有版本库⋯⋯echo. : : 设置SVN命令目录 setSVN_CMD="E: \VisualSVNServer\bin" : : 设置所有版本库根目录 setREPOS_ROOT=D: \Repositories : 设置所有版本库备份根目录 增量备份 ifnotexist%REPOSBACKUPROOT%mkdir%REPOSBACKUPROOT% : : 获取LastRevisions目录 setREPOS_LAST_REVERSION_DIRECTORY=%REPOS_BACKUP_ROOT%\LastRevisiremifnotexist%REPOS_LAST_REVERSION_DIRECTORY%gotoError1ifnotexist%REPOS_LAST_REVERSION_DIRECTORY%mkdir%REPOS_LAST_REVERSION_DIRECTORY% : : 设置所有版本库备份目录 setBACKUP_DIRECTORY=%REPOS_BACKUP_ROOT%\%date: ~0,10%.dmp setBACKUP_DIRECTORY=%BACKUP_DIRECTORY: /=-% remifexist%BACKUP_DIRECTORY%gotoError2 remmkdir%BACKUP_DIRECTORY% ifnotexist%BACKUP_DIRECTORY%mkdir%BACKUP_DIRECTORY%: : 设置用户权限信息备份目录 setREPOS_USER_INFO_DIRECTORY=%BACKUP_DIRECTORY%\UserInfo ifnotexist%REPOS_USER_INFO_DIRECTORY%mkdir%REPOS_USER_INFO_DIREC : : 设置LastRevisions备份目录 setREPOS_LAST_REVERSION_BACKUP_DIRECTORY=%BACKUP_DIRECTORY%\Laifnotexist%REPOS_LAST_REVERSION_BACKUP_DIRECTORY%mkdir%REPOS_LAST_REVERSION_BACKUP_DIRECTORY% : : 备份所有版本库 : : i->版本库、j->版本库最新版本号、k->上次完全备份时版本库的版本号 ns TORY% echo===================%date%%time: ~0,8%执: 行全部版本库备份.===================>>%REPOS_BACKUP_ROOT%\BackUp.logecho备份的版本库版本信息如下: >>%REPOS_BACKUP_ROOT%\BackUp.log : : 读取版本库根目录下每个文件夹,并判断其是否是一个版本库 for/r%REPOS_ROOT%%%iin(.)doifexist%%i\conf\svnserve.conf( : : 将当前版本库的最新版本信息写入tmp文件 %SVN_CMD%\svnlookyoungest%%~fi>%%~ni_last_revision.tmp : : 取出当前版本库的最新版本信息,判断其是否大于0,是则进行处理 for/f%%jin(%%~ni_last_revision.tmp)doif%%jgtr0( : : 判断以前是否存在该版本库的版本信息,存在说明以前备份过,需要基于其进行备份;否则对该版本库进行全新备份 ifexist%REPOS_LAST_REVERSION_DIRECTORY%\%%~ni_last_revision.txt( : : 读取该版本库上次备份时保存的版本信息,如果小于当前版本信息则进行处理for/f%%kin(%REPOS_LAST_REVERSION_DIRECTORY%\%%~ni_last_revision.txt)do echo. echo开始备份版本库%%~n⋯i⋯ : : 取得该版本库本次备份的起始版本号 setversion=%%k set/aversion=! version! +1 : : 增量备份版本库 %SVN_CMD%\svnadmindump--deltas%%~fi--revision! version! : head-incremental>%BACKUP_DIRECTORY%\%%~ni-! version! -%%j.dmpecho%%~ni: ! version! -%%j>>%REPOS_BACKUP_ROOT%\BackUp.logecho版本库%%~n已i经成功备份到%BACKUP_DIRECTORY%\%%~ni-! version! -%%j.dmp! ) )else( echo. echo开始备份版本库%%~n⋯i⋯ : : 全量备份版本库 %SVN_CMD%\svnadmindump--deltas%%~fi>%BACKUP_DIRECTORY%\%%~ni-0-%%j.dmpecho%%~ni: 0-%%j>>%REPOS_BACKUP_ROOT%\BackUp.log echo版本库%%~n已i经成功备份到%BACKUP_DIRECTORY%\%%~ni-0-%%j.dmp! ) : : 将本次版本库备份时的最新版本信息写入文件保存 echo%%j>%REPOS_LAST_REVERSION_DIRECTORY%\%%~ni_last_revision.txt echo%%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全部版本库备份成功! IncreBackupByFtp gotoend : Error1echo.echo提示: echo上次备份保存的%REPOS_LAST_REVERSION_DIREC文T件OR夹Y不%存在,请确认后从上次备份中拷贝LastReversions到%REPOS_BACKUP_R目OO录T,%重新运行程序;echo或者,不基于上次备份重新执行备份! echo重新备份? (Y/N) set/pinput=if%input%==Y(mkdir%REPOS_LAST_REVERSION_DIRECTORY%gotoBegin )else(gotoEnd ) : Error2echo.echo备份目录已经存在,请确认后删除该目录,重新运行程序! gotoEnd : Endecho. echo程序执行结束! 2)SVN数据的增量备份的FTP上传,IncreBackupBy@echooff REM=====设=置区Start================================setset set.1.22 set REM指定从FTP下载下来的文件存放到本机哪个目录set增量备份 REM本地需要备份的根目录 增量备份 REM本地需要打压缩包的备份目录(今天备份文件夹2016-01-01.dmp) setSvnBackupFolder=%SvnBackupRoot%\%date: ~0,10%.dmp REM需要压缩成的文件路径及文件名(今天备份上传文件2016-01-01.dmp.rar)setrarTo REMRAR执行文件的路径 setrarExePath="C: \ProgramFiles\WinRAR\" REMRAR执行文件的路径 setbakupLog\BackUp.log REMFTP命令执行文件缓存set\Temp>"%"(echo,open%%echo,%echo,%echocd"%"echopromptoffechobinechoput%rarToechoput%bakupLogechobye )setPath=%Path%;%rarExePath%setlog\ REM=====设=置区End================================echo===================%date%执行异地版本库增量备份开始.===================>>%logfnotexist%SvnBackupFolder%gotoError1echo%time: ~0,8%备份压缩开始...>>%log WinRAR.exea-ep1-k-r-s-ibck%rarTo%SvnBackupFolder%echo%time: ~0,8%备份压缩成功,压缩的文件路径为: %rarTo>>%logecho%time: ~0,8%备份压缩继续上传FTP开始...>>%log -i-s: "%" echo%time: ~0,8%上传FTP成功,上传FTP目录为: %>>%logdel/q/s/f%rarToecho.>>%log gotoend: Error1 echo. echo%time: ~0,8%提示: 需要进行压缩打包的备份文件夹%SvnBackupFolder%不存在,请确认SVN是否本地备份完成! >>%log echo%time: ~0,8%备份失败! >>%log echo.>>%log echo提示: echo需要进行压缩打包的备份文件夹%SvnBackupFolder%不存在,请确认SVN是否本地备份完成! : Endecho. echo程序执行结束! 3SVN还原BAT设计 SVN的还原LoadBackUp.bat @echooff echo正在准备还原所有版本库⋯⋯echo. : : 设置SVN命令目录 setSVN_CMD="E: \VisualSVNServer\bin" : : 设置所有版本库根目录 setREPOS_ROOT=D: \Repositories : : 设置所有版本库备份根目录增量备份ifnotexist%REPOS_BACKUP_ROOT%gotoError: : 还原所有版本库 echo===================%date%%time: ~0,8%执: 行版本库执行还原操作===================>>%REPOS_BACKUP_ROOT%\SvnLoad.log echo还原的版本库版本信息如下: >>%REPOS_BACKUP_ROOT%\SvnLoad.log : : 将所有保存版本库备份的文件夹名写入tmp dir/b%REPOS_BACKUP_ROOT%\*.dmp>folderName.tmp : : 依次操作tmp文件中包含的文件夹 for/f%%hin(folderName.tmp)do( : : 将所有版本库文件名写入tmp dir/b/a-d%REPOS_BACKUP_ROOT%\%%h\*.dmp> : : 依次操作tmp文件中包含的备份文件 for/f%%iin()do( : : 处理备份文件名,以取得版本库名和相应的版本号for/f"tokens=1,2*delims=-"%%jin("%%~ni")do(echo.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Svn Windows 实现 自动 增量 备份 异地