zoukankan      html  css  js  c++  java
  • svn备份

    1.1 svn备份


    环境请参考svn安装与使用
    两边配置保持一样比较好,避免出错

    1.1.1 svn主安装版本库

    我这里还是写一下

    1. 安装版本库
    [root@svn ~]# yum install subversion -y
    
    1. 创建存储目录
    [root@svn ~]# mkdir /svn
    [root@svn ~]# svnadmin create /svn/test
    
    1. 修改配置文件
    [root@svn ~]# cd /svn/test
    [root@svn test]# cat svnserve.conf
    [general]
    anon-access = read 
    auth-access = write
    password-db = passwd
    authz-db = authz
    realm = This is My First Test Repository   ##这个是提示信息
    
    [root@svn test]# cat passwd
    [users]
    test = 123456
    
    [root@svn test]# cat authz
    [test:/]
    test = rw
    * = r
    
    1. 启动svn
    $ svnserve -d -r /svn
    

    svnbackup安装svn版本库

    [root@svn_backup ~]# yum -y install subversion
    [root@svn_backup ~]# svnadmin create /svn/test  #创建恢复库,配置文件和主保持一致。复制即可
    [root@svn_backup ~]# svnserve -d -r /svn/   #启动svn
    

    1.2 svn三种备份方式

    svn备份一般采用三种方式:
    1)svnadmin dump
    2)svnadmin hotcopy
    3)svnsync
    注意,svn备份不宜采用普通的文件拷贝方式(除非你备份的时候将库暂停),如copy命令、rsync命令。
    笔者曾经用 rsync命令来做增量和全量备份,在季度备份检查审计中,发现备份出来的库大部分都不可用,因此最好是用svn本身提供的功能来进行备份

    1.2.1 svnadmin dump

    优缺点解析
    第一种svnadmin dump是官方推荐的备份方式,优点是比较灵活,可以全量备份也可以增量备份,并提供了版本恢复机制。
    缺点是:如果版本比较大,如版本数增长到数万、数十万,那么dump的过程将非常慢;备份耗时,恢复更耗时;不利于快速进行灾难恢复。

    备份版本库

    [root@svn ~]# svnadmin dump /svn/test/ >/tmp/test.dump  #备份
    * Dumped revision 0.
    * Dumped revision 1.
    * Dumped revision 2.
    * Dumped revision 3.
    [root@svn ~]# scp /tmp/test.dump 10.0.0.11:/tmp  #将备份传到svnbackup服务器
    

    恢复版本库并重启svn

    [root@svn_backup ~]# svnadmin load /svn/backup </tmp/test.dump
    

    使用客户端就可以拉取备份机器上面的代码了

    1.2.2 svnadmin hotcopy

    第二种svnadmin hotcopy原设计目的估计不是用来备份的,只能进行全量拷贝,不能进行增量备份;
    优点是:备份过程较快,灾难恢复也很快;如果备份机上已经搭建了svn服务,甚至不需要恢复,只需要进行简单配置即可切换到备份库上工作。
    缺点是:比较耗费硬盘,需要有较大的硬盘支持

    备份版本库

    [root@svn ~]# svnadmin hotcopy --clean-logs /svn/test /tmp/test.hotcopy.dump
    如果添加 –clean-logs 选项,则 svnadmin 会先执行热拷贝,然后删除不用的Berkeley DB日志文件
    

    还原版本库并重启svn

    [root@svn_backup ~]# svnadmin hotcopy /tmp/test.hotcopy.dump/ /svn/backup
    

    1.2.3 svnsync 双机热备

    本人就是使用个这种方式,原因是,主的svn宕机之后了,将从的svn的服务器的ip改为主的ip直接接着使用,反正开发就是要这么干,下面说说部署方式及流程

    1. 首先两台机器,一台主,一台备
    2. 两边配置要保持一样
    3. 配置pre-revprop-change hook( 钩子)
    4. svnsync init初始化
    5. 测试数据同步
    6. 在来源SVN配置post-commit hook,启用实时备份

    **修改备份SVN库里的钩子脚本pre-revprop-change **

    [root@svn_backup ~]# cd /svn/test/hooks/
    [root@svn_backup hooks]# cp pre-revprop-change.tmpl pre-revprop-change
    [root@svn_backup hooks]# vim pre-revprop-change 将最后一行改为exit 0,或者直接把该文件清空
    [root@svn_backup hooks]# chmod +x pre-revprop-change
    

    初始化同步设定

    [root@svn_backup hooks]# svnsync init file:///svn/test svn://10.0.0.10/test
    Copied properties for revision 0.   #表示成功
    

    语法是:svnsync init {你刚创建的库url} {源库url}
    注意本地url是三个斜杠的:///

    开始同步

    [root@svn_backup hooks]# svnsync sync file:///svn/test
    Transmitting file data .................................................................................................................................................................................
    Committed revision 1.
    Copied properties for revision 1.
    Transmitting file data .
    Committed revision 2.
    Copied properties for revision 2.
    Transmitting file data .
    Committed revision 3.
    Copied properties for revision 3.
    
    ##代表同步成功了
    

    **在来源SVN配置post-commit hook,启用实时备份 **

    [root@svn hooks]# cd 
    [root@svn ~]# cd /svn/test/hooks/
    [root@svn hooks]# cp post-commit.tmpl post-commit
    [root@svn hooks]# chmod +x post-commit
    [root@svn hooks]# vim post-commit  #最后面加上
    svnsync synchronize --non-interactive svn://10.0.0.11/test  --username test --password 123456
    

    测试是否同步,在客户端svn主的工作目录中新建一个文件,查看svn从的工作目录中是否存在就可以了

    1. 在数据同步完成之后将从的svn test工作目录checkout下来
    2. 首先要checkout svn主的test,把目录checkout下来
    3. 配置post-commit
    4. 配置完成svn主工作目录创建文件并提交,svn从目录只需要update更新一下就能看到是否有文件了

    svn删除上传错误版本

  • 相关阅读:
    1.2 文本域(含可编辑表格实现)
    JS手册目录
    1.1 文本框
    JS传中文到后台需要的处理
    java基础和面向对象面试题_01
    try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
    java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
    java基础学习_IO流04_用户登录注册案例(IO版)、数据操作流(操作基本数据类型的流)、内存操作流、打印流、标准输入输出流、随机访问流、合并流、序列化流(对象操作流)、Properties属性集合类、NIO(新IO)_day22总结
    思想:java中,父类的方法中传入的形参的数据类型是泛型,子类的方法的形参想只要一种确定的数据类型,子类该如何做呢?
    几种后端开发技术的选型调研
  • 原文地址:https://www.cnblogs.com/blsnt/p/10144916.html
Copyright © 2011-2022 走看看