SVN完全备份,增量备份,库同步.doc_第1页
SVN完全备份,增量备份,库同步.doc_第2页
SVN完全备份,增量备份,库同步.doc_第3页
SVN完全备份,增量备份,库同步.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

SVN完全备份,增量备份,库同步1, 完全备份 最常见和简单的备份就是直接使用拷贝命令,将版本库目录拷贝到备份目录上,就可以了。但是这样不是很安全的方式, 因为如果在拷贝时版本库发生变化,将会造成备份的结果不够准确,失去备份的作用,为此Subversion提供了“svnadmin hotcopy”命令,可以防止这种问题。 还记得我们的版本库目录吗? D:SVNROOT project1 conf dav db revprops revs transactions hooks locks project2 conf dav db revprops revs transactions hooks locks 如果要把project1备份到d:svnrootbak目录下,只需要运行: svnadmin hotcopy d:svnrootproject1 d:svnrootbakproject1 2, 增量备份 尽管完全备份非常简单,但是也是有代价的,当版本库非常巨大时,经常进行完全备份是不现实的,也并不必要,但是一旦版本库在备份之间发生问题,该如何呢,这里我们就用到了增量备份。 增量备份通常要与完全备份结合使用,就像oracle数据库的归档日志,记录着每次Subversion提交的变化,然后在需要恢复时能够回到最新的可用状态。在我们这个例子中我们使用的是,svnadmin dump命令进行增量的备份,使用方法是: svnadmin dump project1 -revision 15 -incremental dumpfile2 上面的命令实现了对修订版本15进行增量的备份,其中的输出文件dumpfile2只保存了修订版本15更改的内容。 为了记录每次提交的结果,我们需要使用一项Subversion的特性-钩子(hook),看看我们的project1目录: project1 conf dav db revprops revs transactions hooks locks 其中的hooks目录里存放的就是钩子脚本,我们在此处只使用post-commit钩子,这个钩子会在每次提交之后执行,为了实现我们的备份功能,我们在hooks下建立一个文件post-commit.bat,内容如下: echo off set SVN_HOME=C:Program FilesSubversion set SVN_ROOT=D:svnroot set UNIX_SVN_ROOT=D:/svnroot set DELTA_BACKUP_SVN_ROOT=D:svnrootbakdelta set LOG_FILE=%1backup.log echo backup revision %2 %LOG_FILE% for /r %SVN_ROOT% %I in (.) do if D:/svnroot/%nI = %1 %SVN_ROOT%nIhooksdeltaBackup.bat %nI %2 goto end :end 通过这个脚本,可以实现D:svnroot下的版本库提交时自动增量备份到D:svnrootbakdelta(确定这个目录存在),其中使用的deltaBackup.bat其实可以放在任何地方,只是对脚本的svnadmin dump的包装,内容如下: echo 正在备份版本库%2. %SVN_HOME%binsvnadmin dump %SVN_ROOT%1 -incremental -revision %2 %DELTA_BACKUP_SVN_ROOT%1.dump echo 版本库%2成功备份到了%3! 以上两个脚本可以直接拷贝到project2的hooks目录下,不需要修改就可以实现project2的自动备份。 以上的操作已经OK了,现在需要做的是将完全备份和增量备份结合起来,也就是在完全备份后清理增量备份的结果,使之只保存完全备份后的结果。 当果真出现版本库的故障,就要求我们实现版本库的恢复操作了,这是用要使用svnadmin load命令,同时也需要上次的完全备份例如要把上次完全备份backuprepo,和之后的增量备份dumpfile: svnadmin load backuprepo dumpfile 最后的结果,可以下载svnroot.rar,将之解压缩到d:下,然后修改几个bat文件的SVN_HOME就可以使用了。 3, 版本库同步 Subversion 1.4增加了同步机制,可以实现一个版本库同另一个版本库的同步(但好像只是单向的),我们可以用来实现版本库的备份或镜像。 3.1. 对目标库初始化 svnsync init svn:/localhost/project2 svn:/localhost/project1 其中project2是目标的版本库,而project1是源版本库。其中的目标版本库必须为空,而且必须允许修订版本属性的修改,也就是在目标的版本库的hooks目录里添加一个文件pre-revprop-change.bat,内容为空即可。 3.2. 同步project2到project1 svnsync sync svn:/localhost/project2 这 时候你update一下你的project2的一个工作拷贝,就会发现有了project1的所有内容。如果project1又有提交,这时候 project2的版本库无法看到最新的变化,还需要再运行一遍sync操作,这样才能将最新的变化同步。需要注意的是,目标版本库只能做成只读的,如果 目标版本库发生了变更,则无法继续同步了。 3.3. 同步历史属性的修改 因为同步不会更新对历史属性的修改,所以svnsync还有子命令copy-revprops,可以同步某个版本的属性。 3.4. 钩子自动同步 希望在每次提交时同步,则需要在源版本库增加post-commit脚本,内容如下: echo off set SVN_HOME=D:Subversion %SVN_HOME%binsvn

温馨提示

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

评论

0/150

提交评论