zoukankan      html  css  js  c++  java
  • SVN完全备份,增量备份,库同步

     

      svn备份一般采用三种方式:1)svnadmin dump 2)svnadmin hotcopy 3)svnsync.

    优缺点分析:

    ==============

    第一种svnadmin hotcopy只能进行全量拷贝,不能进行增量备份;

       优点:备份过程较快,灾难恢复也很快;如果备份机上已经搭建了svn服务,甚至不需要恢复,只需要进行简单配置即可切换到备份库上工作。

       缺点:比较耗费硬盘,需要有较大的硬盘支持.

     

    第二种svnadmin dump是官方推荐的备份方式,

    优点:比较灵活,可以全量备份也可以增量备份,并提供了版本恢复机制。

      缺点:如果版本比较大,如版本数增长到数万、数十万,那么dump的过程将非常慢;备份耗时,恢复更耗时;不利于快速进行灾难恢复。

     

    第三种svnsync实际上是制作2个镜像库,当一个坏了的时候,可以迅速切换到另一个。不过,必须svn1.4版本以上才支持这个功能。

      优点:当制作成2个镜像库的时候起到双机实时备份的作用;

      缺点:当作为2个镜像库使用时,没办法做到“想完全抛弃今天的修改恢复到昨晚的样子”;而当作为普通备份机制每日备份时,操作又较前2种方法麻烦。     

     

    下面具体描述这三种的备份的方法:

    ===============

    就以下图project版本库为实例

     

    1, svnadmin hotcopy

     

    svnadmin hotcopy是将整个库都“热”拷贝一份出来,包括库的钩子脚本、配置文件等;任何时候运行这个脚本都得到一个版本库的安全拷贝,不管是否有其他进程正在使用版本库。

     

    svnadmin dump命令语法

    svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH

    如果要把project备份到d:svnrootbak目录下,只需要运行:

    svnadmin hotcopy E:Repositories_testproject d:svnrootbakproject

    project版本库用hotcopy命令备份前后文件大小相同,如下图。

     

    2, svnadmin dump

    svnadmin dump命令语法

    svnadmin dump REPOS_PATH [-r LOWER[:UPPER]] [--incremental]

    svnadmin dump命令用于导出整个Repository或Repository下的某个范围的修订版本。REPOS_PATH是版本库的路径,[-r LOWER[:UPPER]]用于指定导出的修订版本范围,由参数-r和两个用:号隔开阿拉伯数字组成。例如:-r 0:50表示导出才版本0到版本50之间的所有修订版,-r是revision的缩写。

    而另一个关键参数是--incremental。 它使用增量方式来导出版本,即每次都只导出自上一个版本以来的修改。这样的好处是第一:可以把一个大的文 件切分成若干个小的文件。第二:在版本库已经存在的情况下,我们只需要每次导出修改的部分,不需要每次都导出整个版本库的内容。甚至可以通过hook脚本 每天晚上自动将当天的修改dump出来做备份用。

    首先用 svnlook youngest查看一下project最新的版本号,显示最新版本记录为4。

    svnlook youngest E:Repositories_testproject

     

    svnadmin dump命令做全量备份

    svnadmin dump E:Repositories_testproject > d:svnrootbakdumpfile

     

    svnadmin dump命令做版本0-2的备份

    svnadmin dump E:Repositories_testproject -r 0:2 --incremental  > d:svnrootbakdumpfile1

      

    svnadmin dump命令做版本3-4的备份

    svnadmin dump E:Repositories_testproject -r 3:4 --incremental  > d:svnrootbakdumpfile2

     

    三个dump文件大小如下图:

     

    分别在SVN服务端新建空版本库dumpdump1dump2

    dump文件导入dump版本库

    svnadmin load E:Repositories_testdump < d:svnrootbakdumpfile

    dump1文件导入dump1版本库

    svnadmin load E:Repositories_testdump1 < d:svnrootbakdumpfile1

    dump1dump2文件导入dump1版本库(注: dump2文件不能导入没有1-2版本的原库中)

    svnadmin load E:Repositories_testdump2 < d:svnrootbakdumpfile1

    svnadmin load E:Repositories_testdump2 < d:svnrootbakdumpfile2

    执行上述命令后SVN服务端文件目录如下:

     

    3, svnsync

    语法是:svnsync init{你刚创建的库url}{源库url}

    svnsync sync : {你刚创建的库url}

    在要备份的机器上建立版本库project1

    进入project1版本库的hooks目录,例如D: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


    ⑤同步初步:          
    在目标机器上,打开命令提示符窗口运行
    svnsync init file:///D:/Repositories/project1 http://192.168.2.12:8080/svn/project

    ⑥实现同步:
    在目标机器上,打开命令提示符窗口运行
    svnsync sync file:///D:/Repositories/project1

     目标机SVN服务器同步后截图如下:

     

  • 相关阅读:
    【记录】百度统计监控博客园
    【织梦】网站地图创建和美化
    【IDE】JRebel热部署实现
    【字体图标】 Font Awesome字体图标如何使用?
    【Eureka】springCloud项目搭建
    java 服务定期卡顿、卡死,服务在运行没挂,日志疯狂打印,接口不能用
    idea springboot 无法启动 Unable to start EmbeddedWebApplicationContext
    POI导出xlsx
    mysql decimal设置默认值0 无效,设置后自动变为null(通过Navicat可视化工具操作)
    Log file ./ib_logfile2 is of different size 268435456 bytes than other log files 50331648 bytes!
  • 原文地址:https://www.cnblogs.com/pipi928/p/7448586.html
Copyright © 2011-2022 走看看