《Svn版本管理备份策略3810.docx》由会员分享,可在线阅读,更多相关《Svn版本管理备份策略3810.docx(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、上海共进通信技术有限公司文件名称Svn版本本管理备备份策略略文件编号SHGJ220100-O00001编制日期2010-06-13版本号V 1.00.0拟定者:汪汪中华审核者: 发布日期:文档状态 修改文档(修正部分内容,更新版本号)陈旧文档(已停止使用该文档)新建文档(移除旧版本,创建新文档)文控章文 档 修修 改 历 史史 记 录版本号修改日期修改内容修改者目录一:SVNN版本管管理备份份目的二:SVNN备份策策略的内内容三:SVNN备份方方式四:SVNN优缺点点分析五:SVNN备份的的方法一:SVNN版本管管理备份份目的配置管理的的一个重重要使命命是保证证数据的的安全性性,防止止服务器器
2、硬盘损损坏,误误操作造造成数据据无法恢恢复的灾灾难性后后果。因因此制定定一个完完整的备备份策略略是非常常重要的的。二:SVNN备份策策略的内内容备份策略的的内容:备份频频度、备备份方式式、备份份存放地地点、备备份责任任人、灾灾难恢复复检查措措施及规规定。备备份频度度、存放放地点等等内容可可以根据据自己的的实际情情况自行行制定;本文重重点描述述备份方方式。三:SVNN备份方方式备份方式:svn备份份一般采采用三种种方式:1)ssvnaadmiin ddumpp 2 ) svvnaddminn hootcoopy 33 ) svnnsynnc. 四:SVNN优缺点点分析优缺点分析析: = svna
3、ddminn duump是是官方推推荐的备备份方式式,优点点是比较较灵活,可可以全量量备份也也可以增增量备份份,并提供了版本本恢复机机制。 缺点是:如如果版本本比较大大,如版版本数增增长到数数万、数数十万,那那么duump的的过程将将非常慢慢;备份份耗时,恢恢复更耗耗时;不不利于快快速进行行灾难恢恢复。 个个人建议议在版本本数比较较小的情情况下使使用这种种备份方方式。 svnaddminn hootcoopy原原设计目目的估计计不是用用来备份份的,只只能进行行全量拷拷贝,不不能进行行增量备备份; 优点是:备备份过程程较快,灾灾难恢复复也很快快;如果果备份机机上已经经搭建了了svnn服务,甚甚至
4、不需需要恢复复只需要进行行简单配配置即可可切换到到备份库库上工作作。 缺点是:比比较耗费费硬盘,需需要有较较大的硬硬盘支持持(俺的的备份机机有1TTB空间间,呵呵呵)。 svnsyync实实际上是是制作22个镜像像库,当当一个坏坏了的时时候,可可以迅速速切换到到另一个个。不过过,必须须svnn1.44版本以以上才支支持这个个功能。 优点是:当当制作成成2个镜镜像库的的时候起起到双机机实时备备份的作作用; 缺点是:当当作为22个镜像像库使用用时,没没办法做做到“想完全全抛弃今今天的修修改恢复复到昨晚晚的样子子”;而当当作为普普通备份份机制每每日备份份时,操操作又较较前2种种方法麻麻烦。 五:SV
5、NN备份的的方法备份的方法法: = 1、svnnadmmin dummp备份份工具 - 这这是suubveersiion官官方推荐荐的备份份方式。 11)定义义备份策策略: 备备份频度度:每周周六进行行一次全全量备份份,每周周日到周周五进行行增量备备份 备备份地点点:备份份存储路路径到/homme/bbackkup/svnn/ 备备份命名名:全量量备份文文件名为为:weeeklly_ffullly_bbackkup.yymmmddd,增量量备份文文件命名名为:ddailly-iincrremeentaal-bbackkup.yymmmddd 备备份时间间:每晚晚21点点开始 备备份检查查:每月
6、月末进行行svnnadmmin loaad恢复复试验。 22)建立立全量备备份脚本本: 在在/下下建立一一个peerl脚脚本文件件,名为为weeeklyy_baackuup.ppl,执执行全量量备份,并并压缩备备份文件件,代码码如下(本代码码只针对对一个库库的备份份,如果果是多个个库请做做相应改改动): #!/ussr/bbin/perrl -w my $ssvn_reppos=/hhomee/svvn/rrepoos/pprojjectt1; my $bbackkup_dirr=/homme/bbackkup/svnn/; my $nnextt_baackuup_ffilee = weeek
7、lly_ffullly_bbackkup.datte +%Y%m%dd; $younngesst=svnnloook yyounngesst $svnn_reeposs; chompp $yyounngesst; printt BBackkingg upp too reevissionn $yyounngesstn; my $ssvnaadmiin_ccmd=svvnaddminn duump -rreviisioon 00youungeest $svvn_rrepoos $baackuup_ddir/$neext_bacckupp_fiile; $svnnadmmin_cmdd; open(
8、LOGG,$baackuup_ddir/lasst_bbackked_up); #记录录备份的的版本号号 printt LOOG $youungeest; closee LOOG; #如果想节节约空间间,则再再执行下下面的压压缩脚本本 printt CComppresssinng ddumpp fiile.nn; printt ggzipp -gg $bbackkup_dirr/$nnextt_baackuup_ffilee; 3)建建立增量量备份脚脚本: 在在全量备备份的基基础上,进进行增量量备份:在/下建立立一个pperll脚本文文件,名名为:ddailly_bbackkup.pl,代代码
9、如下下: #!/ussr/bbin/perrl -w my $ssvn_reppos=/hhomee/svvn/rrepoos/pprojjectt1; my $bbackkup_dirr=/homme/bbackkup/svnn/; my $nnextt_baackuup_ffilee = daailyy_inncreemenntall_baackuup.ddatee +%Y%mm%d; open(IN,$bbackkup_dirr/laast_bacckedd_upp); $prevviouus_yyounngesst = ; chompp $pprevviouus_yyounngesst
10、; closee INN; $younngesst=svnnloook yyounngesst $svnn_reeposs; chompp $yyounngesst; if ($youungeest eq $prreviiouss_yoounggestt) priint Noo neew rreviisioons to bacckupp.n; exiit 00; my $ffirsst_rrev = $preevioous_youungeest + 11; printt BBackkingg upp reevissionns $youungeest .n; my $ssvnaadmiin_cc
11、md = svnnadmmin dummp -inncreemenntall -revvisiion $fiirstt_reevyoounggestt $ssvn_reppos $bacckupp_diir/$nexxt_bbackkup_fille; $svnnadmmin_cmdd; open(LOGG,$baackuup_ddir/lasst_bbackked_up); #记录录备份的的版本号号 printt LOOG $youungeest; closee LOOG; #如果想节节约空间间,则再再执行下下面的压压缩脚本本 printt CComppresssinng ddumpp fi
12、ile.nn; printt ggzipp -gg $bbackkup_dirr/$nnextt_baackuup_ffilee; 4)配配置/eetc/croontaab文件件 配置置 /eetc/croontaab 文文件,指指定每周周六执行行weeeklyy_baackuup.ppl,指指定周一一到周五五执行ddailly_bbackkup.pl; 具体体步骤俺俺就不啰啰嗦了. 5)备备份恢复复检查 在月月底恢复复检查中中或者在在灾难来来临时,请请按照如如下步骤骤进行恢恢复:恢恢复顺序序从低版版本逐个个恢复到到高版本本;即,先先恢复最最近的一一次完整整备份wweekkly_fulll_b
13、backkup.07112011(举例例),然然后恢复复紧挨着着这个文文件的增增量备份份daiily_inccremmenttal_bacckupp.07712002,再再恢复后后一天的的备份00712203,依依次类推推。如下下: user11mkkdirr neewreeposs user11svvnaddminn crreatte nnewrrepoos user11svvnaddminn looad newwreppos svvnaddminn looad newwreppos svvnaddminn looad newwreppos zccat weeeklyy_fuull_bacc
14、kupp.07712001 | svvnaddminn looad newwreppos user11zccat daiily_inccremmenttal_bacckupp.07712002 | svvnaddminn looad newwreppos . (这部分内内容很多多参考了了版本本控制之之道) 2、svnnadmmin hottcoppy整库库拷贝方方式 - svvnaddminn hootcoopy是是将整个个库都“热”拷贝一一份出来来,包括括库的钩钩子脚本本、配置置文件等等;任何何时候运运行这个个脚本都都得到一一个版本本库的安安全拷贝贝,不管管是否有有其他进进程正在在使用版版本
15、库。 因此此这是俺俺青睐的的备份方方式。 1)定定义备份份策略 备备份频度度:每天天进行一一次全量量备份, 备备份地点点:备份份目录以以日期命命名,备备份路径径到 /homme/bbackkup/svnn/$mmddd 备备份保留留时期:保留110天到到15天天,超过过15天天的进行行删除。 备备份时间间:每晚晚21点点开始 备备份检查查:备份份完毕后后自动运运行检查查脚本、自自动发送送报告。 2)建建立备份份脚本 在自己己homme目录录 /下创建建一个文文件,bbackkup.sh: #!/biin/bbashh SRCPAATH=/hoome/svnn/reeposs/; #定义义仓库p
16、pareent路路径 DISTPPATHH=/hhomee/baackuup/ssvn/daate +%mm%d/ ; #定定义存放放路径; if -d $DDISTTPATTH then else mkkdirr $DDISTTPATTH chhmodd g+s $DISSTPAATH fi echo $DIISTPPATHH svnaddminn hootcoopy $SRRCPAATH/Proojecct1 $DIISTPPATHH/Prrojeect11 /homme/bbackkup/svnn/cpprepportt.loog 22&11; svnaddminn hootcoopy
17、$SRRCPAATH/Proojecct2 $DIISTPPATHH/Prrojeect22 cp $SSRCPPATHH/acccesss $DIISTPPATHH; #备份aacceess文文件 cp $SSRCPPATHH/paasswwd $DIISTPPATHH; #备份ppassswd文文件 perl /hoome/bacckupp/svvn/bbackkup_cheeck.pl #运行行检查脚脚本 perl /hoome/bacckupp/svvn/ddeleetDiir.ppl #运行行删除脚脚本,对对过期备备份进行行删除。 3)建建立检查查脚本 在上面面指定的的地方/homm
18、e/bbackkup/svnn/下建建立一个个perrl脚本本:baackuup_cchecck.ppl 备份完整性性检查的的思路是是:对备备份的库库运行 svnnloook yyounngesst,如如果能正正确打印印出最新新的版本本号,则则表明备备份文件件没有缺缺失;如如果运行行报错,则则说明备备份不完完整。我我试过如如果备份份中断,则则运行ssvnllookk yoounggestt会出错错。 perrl脚本本代码如如下: #! /uusr/binn/peerl # Auuthoor:xxuejjianng # 20007-11-10 # htttp:/wwww.scmmbbss.coo
19、m use sstriict; use CCarpp; use NNet:SMMTP; # deffineed tthe varr # my $ssmtpp =NNet:SMMTP-neew(m, Timmeouut = 330, Debbug = 0)| ddie caannt cconnnectt too maail.scmmbbss.coomn; my $bbkreeposs=/homme/bbackkup/svnn/.&geet_dday;#定义义备份路路径 my $sssreeposs=hhttpp:/wwww.sccmbbbs.ccom/reppos;#定定义仓库库urll my
20、rrepoos = (proojecct1,pprojjectt2); my $ttitlle=echho 如下是是昨晚备备份结果果与真实实库对比比的情况况,如果果给出备备份版本本数,则则表示备备份成功功;如果果给报错错信息或或没有备备份版本本数,则则表示备备份失败败: ./repportt; systeem $tittle | diie exeec ffaillednn; foreaach my $myyreppos(reeposs) mmy $bkrrepoos1=$bkkreppos./.$mmyreeposs; my $sssreppos11=$sssreeposs./.$myrrep
21、oos; my $svvnloookbbk1 = echho $myyreppos 昨晚备备份的版版本是:./rrepoort;svnnloook yyounngesst .$bbkreeposs1. ./repportt 2&1; my $svvnloooksss1 = echho $myyreppos 真实库库中的最最新版本本及最后后修改时时间是:./rrepoort;svnn loog -rHHEADD .$sssreeposs1. ./repportt 2&1; sysstemm $ssvnllookkbk11 | diie exeec ffaillednn; sysstemm $ss
22、vnllookkss11 | diie exeec ffaillednn; my $bbodyy =echho = ./reeporrt; my $bbotttom =echho 备份位位置:来来自htttp:/wwww.scmmbbss.coom的.$bbkreeposs. ./rrepoort; systeem $boddy | ddie exxec faiileddn; systeem $botttomm | ddie exxec faiileddn; # rrepoort thee reesullt # open(SESSAMEE,./reeporrt)| diee ccan nott
23、 oppen ./rrepoort; my ssvnnnewss = ; closee(SEESAMME); foreaach my $liine11 (svnnnewws) prrintt $llinee1.n; my eemaiil_aaddrressses =(scmmliist.scmmbbss.coom,leeadeer1scmmbbss.coom,leeadeer2scmmbbss.coom); my $tto = jjoinn(, , eemaiil_aaddrressses); $smtpp-mmaill(sscmscmmbbss.coom); $smtpp-rreciipie
24、ent(emmaill_adddreessees); $smtpp-ddataa(); $smtpp-ddataasennd(Totton); $smtpp-ddataasennd(Froom: svnnRepporttsccmbbbs.ccomnn); $smtpp-ddataasennd(Subbjecct:ssvn备备份检查查报告.&gget_todday.n); $smtpp-ddataasennd(Repply-to:scmmsccmbbbs.ccomnn); $smtpp-ddataasennd(svvnneews); $smtpp-ddataaendd(); $smtpp-qqu
25、itt; # sub gget_todday my( $secc, $minn, $houur, $daay, $moonthh, $yeaar ) = loccalttimee( ttimee() ); $yearr += 19900; $montth+; my $ttodaay = spprinntf( %04dd%022d%002d, $yeaar, $moonthh, $dayy); returrn $todday; sub gget_dayy mmy( $seec, $miin, $hoour, $dday, $mmontth, $yeear ) = loocalltimme( ti
26、mme() ); $yearr += 19900; $montth+; my $ttodaay = spprinntf( %02dd%022d, $mmontth, $daay); returrn $todday; 4)定定义删除除脚本 由于于是全量量备份,所所以备份份不宜保保留太多多,只需需要保留留最近110来天天的即可可,对于于超过115天历历史的备备份基本本可以删删除了。 在/homme/bbackkup/svnn/下建建立一个个perrl脚本本:deelettDirr.pll (注注意,删删除svvn备份份库可不不像删除除普通文文件那么么简单) 脚本本代码请请参看我我的另一一个帖子子:
27、htttp:/wwww.scmmbbss.coom/ccn/ssysttp/220077/122/syystpp6.pphp 5)修修改/eetc/croontaab 文文件 在该该文件中中指定每每晚211点执行行“bacckupp.shh”脚本。 3、svnnsynnc备份份 - 使用ssvnssyncc备份很很简单,步步骤如下下: 1)在备份份机上创创建一个个空库:svnnadmmin creeatee Prrojeect11 2)更改该该库的钩钩子脚本本pree-reevprrop-chaangee(因为为svnnsynnc要改改这个库库的属性性,也就就是要将将源库的的属性备备份到这这个
28、库,所所以要启启用这个个脚本): cd SMPP/hoookss; cp pree-reevprrop-chaangee.tmmpl pree-reevprrop-chaangee; chmmod 7555 prre-rrevppropp-chhangge; vi pree-reevprrop-chaangee; 将该脚脚本后面面的三句句注释掉掉,或者者干脆将将它弄成成一个空空文件。 3)初始化化,此时时还没有有备份任任何数据据: svnsyync iniit ffilee:/hoome/bacckupp/svvn/ssvnssyncc/Prrojeect11/ htttp:/svvntees
29、t.subbverrsioon.ccom/reppos/Proojecct1 语法是是:svvnsyync iniit 你刚创创建的库库urll 源库uurl 注意本本地urrl是三三个斜杠杠的:/ 4)开始备备份(同同步): svnnsynnc ssyncc fiile:/homme/bbackkup/svnn/svvnsyync/Proojecct1 5)建立同同步脚本本 备份完完毕后,建建立钩子子脚本进进行同步步。在源源库/hhookks/下下建立/修改ppostt-coommiit脚本本,在其其中增加加一行,内内容如下下: /usrr/biin/ssvnssyncc syync -no
30、nn-innterracttivee fiile:/homme/bbackkup/svnn/svvnsyync/Proojecct1 你可能能已经注注意到上上面的备备份似乎乎都是本本地备份份,不是是异地备备份。实实际上,我我是通过过将远程程的备份份机moountt(请参参阅moountt命令)到到svnn服务器器上来实实现的,逻逻辑上看看起来是是本地备备份,物物理上实实际是异异地备份份。本文来自Svnn中文网网转发发请保留留本站地地址:htttp:/wwww.svnn8.ccom/svnnpz/2000807702/8366.httml 93its nott veery saffe.MMost
31、t peeoplle llikee too saave theeir worrk tto tthe repposiitorry ffreqquenntlyy,shhoulld ssomeethiing badd accciddenttallly hhapppen to theeir worrkinng ccopyy.Seconnd,iitss noot vveryy fllexiiblee.Iff yoou ddo yyourr woork on diffferrentt coompuuterrs (perrhapps yyou havve aa woorkiing coppy oof /ca
32、llc/ttrunnk oon ttwo diffferrentt maachiiness),yyoull neeed tto mmanuuallly ccopyy yoour chaangees bbackk annd ffortth oor jjustt doo alll tthe worrk oon aa siinglle ccompputeer.BBy tthatt saame tokken,its ddiffficuult to shaare youur cchanngess inn prrogrresss wiith anyyonee ellse.A ccommmon sofftw
33、aare devveloopmeent “besst ppraccticce”is to alllow youur ppeerrs tto rreviiew youur wworkk ass yoou ggo.IIf nnoboody seees yyourr innterrmeddiatte ccommmitss,yoou llosee pootenntiaal ffeeddbacck aand mayy ennd uup ggoinng ddownn thhe wwronng patth ffor weeeks befforee annothher perrsonn onn yoour t
34、eaam nnotiicess.Finallly,wheen yyoure finnishhed witth aall youur chaangees,yyou migght finnd iit vveryy diiffiicullt tto rremeergee yoour finnal worrk wwithh thhe rrestt off thhe ccomppanyys maiin boddy oof ccodee.Saallyy (oor ootheers)mayy haave madde mmanyy ottherr chhangges in thee reepossitoory thaat aare diffficcultt to inccorpporaate intto yyourr woorkiing coppy esppeciiallly iif yyou runn svvn uupdaate aftter weeeks of isoolattionn.