




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SVN版本库无损迁移与自动备份引:最近正在做版本库迁移和自动备份,在网上找过一些相关资料,但都比较凌乱,让人很纠结,相信很多网友会遇到相同的问题,笔者根据自己的整理和实践结果总结了一套可操作(经过实际验证)的方案,打算用两篇博客与大家分享一下,供大家参考。一、业务目标1、在不改变原来版本库的内容和版本号的前提下,把原来分散在多个服务器上的各个版本库统一迁移到一台服务器上的新版本库上。2、实现新版本库的定时自动备份。二、相关指令1、svnadmin dump命令语法svnadmin dump Repository_Path -r LOWER:UPPER -incremental(1)svnadmindump命令用于导出整个Repository或Repository下的某个范围的修订版本。(2)参数说明:Repository_Path是版本库的路径,-rLOWER:UPPER用于指定导出的修订版本范围,由参数-r和两个用:号隔开阿拉伯数字组成。例如:-r 0:100表示导出才版本0到版本100之间的所有修订版,-r是revision的缩写。-incremental,它使用增量方式来导出版本,即每次都只导出自上一个版本以来的修改。这样的好处是第一:可以把一个大的文件切分成若干个小的文件。第二:在版本库已经存在的情况下,我们只需要每次导出修改的部分,不需要每次都导出整个版本库的内容。甚至可以通过hook脚本,每天晚上自动将当天的修改dump出来做备份用。2、svnadmin load命令语法svnadmin load Repository_Path(1)svnadminload命令用于从标准输入流/其它流中导入版本库,(2)参数说明:Repository_Path是要导入的目标版本库。3、dump和load的输出/入重定向svnadmin dump oldRepository dumpfile svnadminload newRepository 把屏幕的输出定向当前目录下的dumpfile,而第二个命令从当前目录下的dumpfile文件导入。4、把导出和导入合并。svnadmin dump oldRepository| svnadmin load newRepository5、过滤器svndumpfilter用于指定只包括那些项目,不会包括其它的项目三、迁移版本库(解决方案示例)方案1、一次全部迁移。首先新建三个批处理文档(新建记事本,后缀改为.bat)导出.batsvnadmin dump oldRepository dumpfile新建版本库.bat svnadmin create newRepostitory导入.batsvnadmin load newRepository D:dumpfile说明:上述步骤即实现将oldRepository版本库无损迁移到newRepository。这里是采用批处理文件的形式,完全可以在命令提示符窗口下,以命令的形式完成上述操作,注意必须在相应的目录下执行。方案2、分批增量迁移版本库。查看当前旧版本库最新的版本号是多少在命令提示符窗口,打开库所在目录,例如:cd D:Repositories。执行svnlook youngest oldRepositories例如返回版本为281分批增量导出版本库内容D:Repositoriessvnadmin dump oldRepository -r 0:100 dumpfile1导出第一个文件,版本号从0到100的修订版本D:Repositoriessvnadmin dump oldRepository -r 101:200 -incremental dumpfile2导出第二个文件,版本号从101到200的修订版本D:Repositoriessvnadmin dump oldRepository -r 201:281 -incremental dumpfile3导出第三个文件,版本号从201到281的修订版本注:三个命令中第2,3个命令多了一个-incremental的参数,使其采用了增量的方式导出,分批导入版本库文件注:打开要导入的版本库所在目录,例如cd E:Repositories。首先导入dumpfile1,然后是dumpfile2,dumpfile3依次执行E:Repositoriessvnadmin load newRepository dumpfile1E:Repositoriessvnadmin load newRepository dumpfile2E:Repositoriessvnadmin load newRepository dumpfile3可能会出现的问题,提示错误:版本库文件已经存在。请确认前边导出时,是否使用了-incremental参数。说明:这里我们是在命令提示符窗口下进行的。同样的,我们也可以按照方案1,采用写批处理文件的方式。注:要根据自己的svn安装目录,和库目录写命令,例如:C:Program FilesVisualSVN Serverbinsvnadmin load D:RepositoriesnewRepository dumpfile将转储文件三次送入过滤器,每次仅保留一个顶级目录,就可以得到三个转储文件:cat dumpfile | svndumpfilter include Project1 1-dumpfilecat dumpfile | svndumpfilter include Project2 2-dumpfilecat dumpfile | svndumpfilter include project3 3-dumpfile注:cat是subversion的文档中,关于svndumpfilter介绍给出的命令,在windows下并没有,与cat类似的命令是type,可以采用typedumpfile | svndumpfilter include Project1 1-dumpfile这三个转储文件中,每个都可以用来创建一个可用的版本库,不过它们保留了原版本库的精确路径结构。也就是说,虽然项目Project1现在独占了一个版本库,但版本库中还保留着名为Project1的顶级目录。如果希望trunk、tags和branches这三个目录直接位于版本库的根路径下,你可能需要编辑转储文件,调整Node-path和Copyfrom-path头参数,将路径Project1/删除。同时删除转储数据中创建Project1目录的部分。一般为如下的一些内容:Node-path: Project1 Node-action: add Node-kind: dir Content-length: 0注:手工编辑转储文件来移除一个顶级目录时,不要让编辑器将换行符转换为本地格式(比如将rn转换为n),很容易造成转储文件失效。最后,我们可以采用方案1提供的方法,将三个转储文件分别导入:svnadmin create Project1svnadmin load Project1 1-dumpfilesvnadmin create Project2svnadmin load Project2 2-dumpfilesvnadmin create Project3svnadmin load Project3 3-dumpfile迁移版本库的解决方案就先写到这,下篇博客中,我们将介绍定时自动备份版本库的解决方案。四、定时自动备份版本库解决方案1、业务目标版本库的远程自动备份,将版本库备份到另一台机器上。假设我们要同步的源版本库为 10/svn/svnprojec位于机器A,具体路径我们不必理会,因为我们使用http协议目标库在机器B, file:/F:/Repositories/svnproject,这个为了简单和安全,我们使用file:/协议实现版本库的本地备份,只需要将上述目标库的位置,改成本地位置即可。2、相关指令达到备份版本库的目的要用到两个命令:svnsync init初始化,建立目标库和源库之间的同步关系命令格式: svnsync init 目标库URL 源库URL(两个URL之间有空格) svnsync sync真正的同步命令格式: svnsync sync 目标库URL3、过程示例(1)备份在要备份的机器上建立版本库(如果是本地备份,则在本地建立版本库):svnadmin create test1BackUp进入源版本库的hooks目录,例如cdD:RepositoriesTestRepostitoryhooks创建pre-revprop-change.bat文件:复制pre-revprop-change.tmpl,将扩展名改为pre-revprop-change.bat,并且清空原有的所有内容,保存。修改文件:修改pre-revprop-change.tmpl文件,用记事本打开该文件,把文件最后的exit 1改为exit 0(原脚本的意思是如果修改的是svn:log属性,将允许修改,返回0;否则,不允许,返回1,我们要将它改为允许修改所有的属性,在脚本中直接返回0)同步初步: 在目标机器上,打开命令提示符窗口,打开SVN服务器Bin目录,运行svnsync init file:/D:/Repositories/test1BackUp 10/svn/Test1(会提示输入用户名和密码,这里提供的用户名和密码是可以完全读取于10/svn/Test1的计算机密码,用户名和密码)实现同步:在目标机器上,打开命令提示符窗口,打开SVN服务器Bin目录,运行svnsyncsync file:/D:/Repositories/test1BackUp(如果提示输入用户名和密码,你可以在这个命令之后加上 username 、password参数即svnsync sync file:/D:/Repositories/test1BackUp -username username -password password)注:第两步可以直接放在一起,写入到一个批处理文件(新建记事本,将中的两句话放入,改记事本后缀为.bat),将该批处理文件放入SVN服务器Bin目录,双击运行即可。一会我们设定执行备份会用到这个批处理文件。如果是本地备份,则只需将目标URL改为本地库位置即可。(针对VisualSVN,因为一台机器上只能有一个VisualSVN服务器,所以所有版本库只能在一个目录下,才能被服务器识别,这样,备份只能备在相同目录,似乎意义不大。)如果版本库较大时,备份的时间会有点慢,花费几个小时或者一天也是有可能的,备份完毕,你可以打开目标库看看,和源库是一样的。(2)定时执行备份。这里我们用到了windows自带的任务计划程序在控制面板所有控制面板项管理工具下,打开任务计划程序主界面:点击右侧操作的创建任务开始创建任务,常规选项卡下,主要设置任务的基本信息,这里我们一般给任务起一个名字就可以了,例如SVN同步操作选项卡下,点击新建,这里可以设定我们要执行的操作。我们备份SVN版本库,需要执行,刚才设定好的备份批处理文件。这个文件,我们实现应该放在SVN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2031年中国新型筒架行业投资前景及策略咨询研究报告
- 厦门华厦学院《俄国史》2023-2024学年第二学期期末试卷
- 2025至2031年中国实时三维视景仿真建模工具行业投资前景及策略咨询研究报告
- 2025至2031年中国商用流量表行业投资前景及策略咨询研究报告
- 2025至2031年中国仲马胶囊行业投资前景及策略咨询研究报告
- 2025年关于签订房屋买卖合同需遵循的法律法规
- 2025至2030年中国领袖口压烫机数据监测研究报告
- 济源钢结构仓库施工方案
- 2025至2030年中国滑道专用钉数据监测研究报告
- 2025至2030年中国汽车音响均衡器数据监测研究报告
- 2023年新高考生物江苏卷试题真题答案解析版
- 刑法学教全套课件(完整)-2024鲜版
- 专题16.7 二次根式章末八大题型总结(拔尖篇)-八年级数学下册(人教版)(解析版)
- 2023流域超标准洪水防御预案编制导则
- 如何提高调查研究能力
- 农产品加工培训课件
- 初三励志、拼搏主题班会课件
- 城市轨道交通的智能调度与运营优化
- 计算机网络基础IP地址课件
- 工业自动化的系统架构与组成
- 问题性肌肤教育培训课件
评论
0/150
提交评论