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_test\project d:\svnrootbak\project

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_test\project

svnadmin dump命令做全量备份

svnadmin dump E:\Repositories_test\project > d:\svnrootbak\dumpfile

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

svnadmin dump E:\Repositories_test\project -r 0:2 --incremental  > d:\svnrootbak\dumpfile1

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

svnadmin dump E:\Repositories_test\project -r 3:4 --incremental  > d:\svnrootbak\dumpfile2

三个dump文件大小如下图:

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

dump文件导入dump版本库

svnadmin load E:\Repositories_test\dump < d:\svnrootbak\dumpfile

dump1文件导入dump1版本库

svnadmin load E:\Repositories_test\dump1 < d:\svnrootbak\dumpfile1

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

svnadmin load E:\Repositories_test\dump2 < d:\svnrootbak\dumpfile1

svnadmin load E:\Repositories_test\dump2 < d:\svnrootbak\dumpfile2

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

3, svnsync

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

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

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

进入project1版本库的hooks目录,例如D:\Repositories\TestRepostitory\hooks


③创建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服务器同步后截图如下:

SVN完全备份,增量备份,库同步的更多相关文章

  1. SVN全量备份+增量备份脚本

    一.全量备份 环境:一台主SVN,一台备SVN(主要提供备份功能),后续可通过钩子脚本进行实时备份,后续发给大家. 工作原理:通过svn的hotcopy命令过行热备份,并进行一系列的检查,备份后通过r ...

  2. MySQL定时备份(全量备份+增量备份)

    MySQL 定时备份 参考 zone7_ 的 实战-MySQL定时备份系列文章 参考 zmcyu 的 mysql数据库的完整备份.差异备份.增量备份 更多binlog的学习参考马丁传奇的 MySQL的 ...

  3. Mysql DBA 运维 MySQL数据库索引优化及数据丢失案例 MySQL备份-增量备份及数据恢复基础实战 MySQL数据库生产场景核心优化

    需要的联系我,QQ:1844912514

  4. Oracle 12 Rman增量备份

    增量备份 增量备份主要作用是仅复制自上次备份以来已更改的数据块.您可以使用RMAN创建数据文件,表空间或整个数据库的增量备份. 将增量备份作为策略的一部分的主要原因是: 用于基于增量更新备份的策略,其 ...

  5. Xtrabackup全量 增量备份详解

    xtrabackup是Percona公司CTO Vadim参与开发的一款基于InnoDB的在线热备工具,具有开源,免费,支持在线热备,备份恢复速度快,占用磁盘空间小等特点,并且支持不同情况下的多种备份 ...

  6. linux下rsync和tar增量备份梳理

    前面总结过一篇全量备份/增量备份/差异备份说明,下面介绍下linux下rsync和tar两种增量备份的操作记录: 1)rsync备份 rsync由于本身的特性,在第一次rsync备份后,以后每次都只是 ...

  7. mysql实时增量备份

    采用binlog日志的好处 掌控所有更改操作,必要时可用于恢复数据 数据库主从复制的必要条件 [root@localhost~]# vim /etc/my.cnf [mysqld] .. .. log ...

  8. Mysql增量备份之Mysqldump&Mylvmbackup

    简单介绍 备份类型 备份方式 热备份:备份期间不需要服务停机,业务不受影响: 温备份:备份期间仅允许读的请求: 冷备份:备份期间需要关闭Mysql服务或读写请求都不受影响: 完全备份:full bac ...

  9. xtra+binlog增量备份脚本

    目录 一.备份原理 innobackupex原理 binlog原理 特点 备份策略 二.环境准备 开启binlog 创建授权用户 安装innobackupex 三.添加脚本 全量备份 增量备份 bin ...

  10. 通过innobackupex实现对MySQL的增量备份与还原

    备份 增量备份是基于完整备份的,所以我们需要先做一次完整备份: innobackupex --password=test /backup/ 备注:test是我的MySQL服务的root用户的密码,/b ...

随机推荐

  1. 19-06 【phpunit和docker】

    phpunit简介 在用PHP做项目的时候,有时候我们需要写一些测试代码,其中可能包含单元测试(比如字符串处理,ip解析,mobile解析等). 我们常用的工具是phpunit,它很方便地帮我们组织测 ...

  2. mysql数据库优化(转)

    今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据 ...

  3. Mybateis mapper 接口 example 用法

    注意:希望通过此篇文章分享 可以使大家对mapper接口以及example 用法更加深入理解 MyBatis的Mapper接口以及Example的实例函数及详解 一.mapper接口中的方法解析 ma ...

  4. 正在执行的sql

    //查询目前系统正在运行的sqlSELECT [Spid]=session_Id, [ecid], [Database]=DB_NAME(sp.dbid), [User] = nt_username, ...

  5. CMakeLists 的使用,大型工程使用cmake 的构件过程

    CMakeLists 的使用,大型工程使用cmake 的构件过程 CMakeLists_1 PROJECT(hello_2) cmake_minimum_required(VERSION 2.8) # ...

  6. go语言学习逻辑运算符if判断,iota的理解

    第一天学习go语言,首先吐槽一下,配置go语言浪费了我两个小时的时间 不是在百度,就是在百度的路上,这里介绍一下我的go语言的版本和开发平台 go语言1.12版本,之前没有用过在早的版本了首先记录一下 ...

  7. LogXGEController: Error: XGE version 8.01 (build 1867) or higher is required for XGE shader

    找到Engine/Config/ConsoleVariables.ini 禁用XGEShaderCompile就可以了

  8. aws

    名称 对应的技术 EC2 虚拟机技术 Virtual Machine 抽象了物理机,看到的是多台虚拟的机器 需要配置管理存储.网络.操作系统等 数分钟启动,运行数周或数月 ECS 容器 Contain ...

  9. maven学习--1.项目结构及简单使用

    1.项目目录结构 MavenProjectRoot(项目根目录)   |----src   |     |----main   |     |         |----java ——存放项目的.ja ...

  10. 20165213 Exp1 PC平台逆向破解

    PC平台逆向破解 实验内容 1.了解掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码 NOP:NOP指令即"空指令".执行到NOP指令时,CPU什么也不做,仅仅当做 ...