Svn版本管理备份策略
- 格式:docx
- 大小:18.74 KB
- 文档页数:9
寸录一:SVN版本管理备份目的二:SVN备份策略的内容三:SVN备份方式四:SVNf尤缺点分析五:SVN备份的方法二SVN版本管理备份目的配置管理的一个重要使命是保证数据的安全性,防止服务器硬盘损坏,误操作造成数据无法恢复的灾难性后果。
因此制定一个完整的备份策略是非常重要的。
二:SVN备份策略的内容备份策略的内容:备份频度、备份方式、备份存放地点、备份责任人、灾难恢复检查措施及规定。
备份频度、存放地点等内容可以根据自己的实际情况自行制定;本文重点描述备份方式。
三:SVN备份方式备份方式:svn 备份一般采用三种方式:1)svnadmin dump 2 ) svnadmin hotcopy 3 ) svnsync.四:SVN优缺点分析优缺点分析:svnadmin dump是官方推荐的备份方式,优点是比较灵活,可以全量备份也可以增量备份,并提供了版本恢复机制。
缺点是:如果版本比较大,如版本数增长到数万、数十万,那么dump的过程将非常慢;备份耗时,恢复更耗时;不利于快速进行灾难恢复。
个人建议在版本数比较小的情况下使用这种备份方式。
svnadmin hotcopy 原设计目的估计不是用来备份的,只能进行全量拷贝,不能进行增量备份;优点是:备份过程较快,灾难恢复也很快;如果备份机上已经搭建了svn服务,甚至不需要恢复只需要进行简单配置即可切换到备份库上工作。
缺点是:比较耗费硬盘,需要有较大的硬盘支持(俺的备份机有1TB空间,呵呵)。
svnsync实际上是制作2个镜像库,当一个坏了的时候,可以迅速切换到另一个。
不过,必须版本以上才支持这个功能。
优点是:当制作成2个镜像库的时候起到双机实时备份的作用;缺点是:当作为2个镜像库使用时,没办法做到“想完全抛弃今天的修改恢复到昨晚的样子”;而当作为普通备份机制每日备份时,操作又较前2种方法麻烦。
五:SVN备份的方法备份的方法:1、svnadmin dump 备份工具这是subversion官方推荐的备份方式。
svnadmin hotcopy 是将整个库都"热”拷贝一份出来,包括库的钩子脚本、配置文件等;任何时候运行这个脚本都得到一个版本库的安全拷贝,不管是否有其他进程正在使用版本库。
因此这是俺青睐的备份方式。
1 )定义备份策略备份频度:每天进行一次全量备份,备份地点:备份目录以日期命名,备份路径到/home/backup/svn/${mmdd}备份保留时期:保留10天到15天,超过15天的进行删除。
备份时间:每晚21点开始备份检查:备份完毕后自动运行检查脚本、自动发送报告。
my $bkrepos1=$bkrepos."/".$myrepos; my $ssrepos1=$ssrepos."/".$myrepos; my $sv nlo okbkl = "echo "$myrepos".$bkrepos1." >> ./report 2>& 1";my $sv nlo okss1 = "echo "$myrepos -r'HEAD' ".$ssrepos1." >> ./report 2>& 1";system $svnlookbkl || die "exec failedn"; system $sv nlo okssl || die "exec failed n";my $body ="echo======================================================================" >>./report"; my $bottom ="echo " 备份位置:来自的".$bkrepos."" >>./report";system $body || die "exec failed n"; system $bottom || die "exec failed n";###### report the result ####open(SESAME,"./report")|| die "can not open ./report"; my @svnn ews = <SESAME>; close(SESAME);foreach my $li ne1 (@sv nn ews) {print $li ne1." n"; }my @email_addresses =("","",""); my $to= join (', ', @email_addresses);$smtp->mail("");$smtp->recipie nt(@email_addresses); $smtp->data();$smtp->datase nd("Toto n"); $smtp->datase nd("From"); $smtp->datasend("Subject:svn 备份检查报告".&get_today."n");$smtp->datase nd("");$smtp->datase nd("@sv nn ews"); $smtp->datae nd(); $smtp->quit;#############sub get today {my( $sec, $min, $hour, $day, $mon th, $year ) = localtime( time());昨晚备份的版本是: ">>./report;sv nlook you ngest真实库中的最新版本及最后修改时间是: ">>./report;svn log$year += 1900;$mon th++;my $today = spri ntf( "%04d%02d%02d", $year, $mon th, $day);retur n $today;}sub get_day{my( $sec, $min, $hour, $day, $mon th, $year ) = localtime( time());$year += 1900;$mon th++;my $today = sprintf( "%02d%02d", $month, $day);retur n $today;}4)定义删除脚本由于是全量备份,所以备份不宜保留太多,只需要保留最近10来天的即可,对于超过15天历史的备份基本可以删除了。
在/home/backup/svn/ 下建立一个perl 脚本:(注意,删除svn备份库可不像删除普通文件那么简单)脚本代码请参看我的另一个帖子:5 )修改/etc/crontab 文件在该文件中指定每晚21点执行“”脚本。
3、svnsync 备份使用svnsync备份很简单,步骤如下:1)在备份机上创建一个空库:svn admin create Project12)更改该库的钩子脚本pre-revprop-change (因为svnsync要改这个库的属性,也就是要将源库的属性备份到这个库,所以要启用这个脚本) :cd SMP/hooks;cp pre-revprop-cha nge;chmod 755 pre-revprop-cha nge;vi pre-revprop-cha nge;将该脚本后面的三句注释掉,或者干脆将它弄成一个空文件。
3)初始化,此时还没有备份任何数据:svnsync init语法是:svnsync init { 你刚创建的库url} { 源库url}注意本地url 是三个斜杠的:Second,it's not very you do your work on different computers(perhaps you have a worki ng copy of /calc/tru nk on two differe nt machi nes),you'll n eed to manu allycopy your cha nges back and forth or just do all the work on a sin gle that same toke n,it's difficultto share your cha nges in progress with anyone com mon software developme nt “ best practice ” is to allow your peers to review your work as you n obody sees your in termediate commits,you lose pote ntial feedback and may end up going down the wrong path for weeks before another person on your team notices. Finally,when you're finished with all your changes,you might find it very difficult to remerge your。