Backup Specified Revision

  1. Backup specified revision (here is 20):

$ cd /opt/svnRepo

$ svnadmin dump deployTest/ -r 20 > deploy-r20.dump

  1. Restore backup:

$ mv deploy-r20.dump /opt/Gcp/tmp

$ cd /opt/Gcp/tmp

$ svnadmin create deploy20

$ svnadmin load deploy20 < deploy-r20.dump

Verify

  1. Get revision 20 of "deploy.exp" in original repository

$ svn cat -r 20 file:///opt/svnRepo/deployTest/CalcServer/deploy.exp > r20

  1. Get "deploy.exp" in restored repository

$ svn cat file:///opt/Gcp/tmp/deploy20/CalcServer/deploy.exp > restore20

  1. Compare them:

$ diff r20 restore20

They are identical.

  1. Compare logs:

[root@cloud141 /opt/svnRepo]$ svn log -r 20 file:///opt/svnRepo/deployTest/


r20 | bvt | 2013-08-30 17:30:03 +0800 (Fri, 30 Aug 2013) | 1 line
remove unittest in source file


[root@cloud141 /opt/svnRepo]$ svn log file:///opt/Gcp/tmp/deploy20


r1 | bvt | 2013-08-30 17:30:03 +0800 (Fri, 30 Aug 2013) | 1 line
remove unittest in source file


So you can see the restored repository is identical to that part of original repository except the revision number.

Backup Specified Revisions

$ svnadmin dump deployTest/ -r 10:20 > deploy-r20.dump

Incremental Backup

  1. Backup:

$svnadmin dump myrepos -r 0:1000 > 0-1000.dumpfile
$svnadmin dump myrepos -r 1001:2000 --incremental > 1001-2000.dumpfile
$svnadmin dump myrepos -r 2001:3000 --incremental > 2001:3000.dumpfile

  1. Restore:

$svnadmin load myrepos < 0-1000.dumpfile
$svnadmin load myrepos < 1001-2000.dumpfile
$svnadmin load myrepos < 2001:3000.dumpfile

Experiment on incremental dump

  1. Create a incremental backup:
    [root@cloud141 /opt/svnRepo]$ svnadmin dump deployTest/ --incremental -r 9:11 > r9-11.dump
  2. Create a full backup:
    [root@cloud141 /opt/svnRepo]$ svnadmin dump deployTest/ -r 9:11 > backup9-11.dump
  3. Compare the size of these two dump files, full backup is obviously larger than the incremental counterpart:
    [root@cloud141 /opt/svnRepo]$ ll
    total 984
    -rw-r--r-- 1 root root 997105 Oct 31 19:08 backup9-11.dump
    drwxr-xr-x 6 root root 4096 Aug 22 18:09 deployTest
    -rw-r--r-- 1 root root 2509 Oct 31 19:07 r9-11.dump
  4. Restore a incremental backup in a fresh repository:
    [root@cloud141 /opt/svnRepo]$ mv r9-11.dump ../Gcp/tmp
    [root@cloud141 /opt/Gcp/tmp]$ svnadmin create new9
    [root@cloud141 /opt/Gcp/tmp]$ svnadmin load new9 < r9-11.dump
    <<< Started new transaction, based on original revision 9
    svnadmin: File not found: transaction '0-0', path 'CalcServer/src/com/boco/deploy/ConfigLoader.java'
  5. editing path : CalcServer/src/com/boco/deploy/ConfigLoader.java ...[root@
    You can see the restore failed.
  6. Restore a incremental backup (revision 9~11) in a "root" repository (restored from revision 8) :
    [root@cloud141 /opt/Gcp/tmp]$ svnadmin load backup8 < r9-11.dump
    ...
    [root@cloud141 /opt/Gcp/tmp]$ svn log file:///opt/Gcp/tmp/backup8

r4 | bvt | 2013-08-30 16:35:10 +0800 (Fri, 30 Aug 2013) | 1 line
initial import project


r3 | bvt | 2013-08-30 15:31:47 +0800 (Fri, 30 Aug 2013) | 1 line
make new project basedir


r2 | bvt | 2013-08-29 14:32:15 +0800 (Thu, 29 Aug 2013) | 1 line
remove unittest in source file to pass compile without junit


r1 | bvt | 2013-08-29 14:31:10 +0800 (Thu, 29 Aug 2013) | 1 line
remove unittest in source file to pass compile without junit


Now the restore succeed.

Summary

Backup a huge repository in the following steps:

  1. Execute a full backup at a revision. If the revision n is not 0, you will lose all revisions from 0 to n-1;

  2. Execute incremental backups weekly, use the revision arrange as file name: "inc-rev-from-to.dump", like "inc-rev-35-46.dump";

  3. When original repository corrupts, first load the full backup, then load the incremental ones according to their revision numbers;

Ref:

Subversion Backup and Restore的更多相关文章

  1. TFS Express backup and restore

    When we setup source control server, we should always make a backup and restore plan for it. This ar ...

  2. 转:db2 backup 及 restore

    db2 backup 及 restore 2011-06-21 18:12:20|  分类: AIX |举报 |字号 订阅     两个问题: db2=>list applications db ...

  3. 第一章、关于SQL Server数据库的备份和还原(sp_addumpdevice、backup、Restore)

    在sql server数据库中,备份和还原都只能在服务器上进行,备份的数据文件在服务器上,还原的数据文件也只能在服务器上,当在非服务器的机器上启动sql server客户端的时候,也可以通过该客户端来 ...

  4. [转]Configure Network Drive Visible for SQL Server During Backup and Restore Using SSMS

    本文转自:https://mytechmantra.com/LearnSQLServer/Configure-Network-Drive-Visible-for-SQL-Server-During-B ...

  5. Backup and restore of FAST Search for SharePoint 2010

    一个同事问我一个问题: 如果FAST Search for SharePoint 2010被full restore到了一个之前的时间点, 那么当FAST Search重新开始一个增量爬网的时候, 会 ...

  6. SQL Server Database Backup and Restore in C#

    SQL Server Database Backup and Restore in C# Syed Noman Ali Shah,                          7 Feb 201 ...

  7. csharp: SQL Server 2005 Database Backup and Restore using C#

    1.第一种方式: using SQLDMO;//Microsoft SQLDMO Object Library 8.0 /// <summary> /// 数据库的备份 /// 涂聚文注: ...

  8. Experience on Namenode backup and restore --- checkpoint

    Hadoop version: Hadoop 2.2.0.2.0.6.0-0009 Well, We can do this by building Secondary Namenode, Check ...

  9. Backup and Restore MySQL Database using mysqlhotcopy

    mysqlhotcopy is a perl script that comes with MySQL installation. This locks the table, flush the ta ...

随机推荐

  1. angular组件间的通信(父子、不同组件的数据、方法的传递和调用)

    angular组件间的通信(父子.不同组件的数据.方法的传递和调用) 一.不同组件的传值(使用服务解决) 1.创建服务组件 不同组件相互传递,使用服务组件,比较方便,简单,容易.先将公共组件写在服务的 ...

  2. Gerrit GitLab GitHub的几点不同

    代码评审的方式不一样 GitHub是基于Pull Request 进行代码评审; GitLab是基于Merge Request 进行代码评审; Gerrit是基于Change Request 进行代码 ...

  3. Leetcode No.35 Search Insert Position(c++实现)

    1. 题目 1.1 英文题目 Given a sorted array of distinct integers and a target value, return the index if the ...

  4. 使用Hugo框架搭建博客的过程 - 页面模板

    前言 最初在制作友链界面时,没有学习Hugo框架,一头雾水.网上有关的教程甚少,只能去学一遍Hugo. 在学习Hugo的过程中,了解了列表模板,分类模板.开发了几个功能页面,如:留言板,友链,记忆分类 ...

  5. pod调度

    Pod调度 在默认情况下,一个pod在哪个node节点上运行,是由scheduler组件采用相应的算法计算出来的,这个过程是不受人工控制的. 但是在实际过程中,这并不满足需求,因为很多情况下,我们想控 ...

  6. java基础---设计模式(2)

    结构型模式 出处:https://blog.csdn.net/zhangerqing/article/details/8239539 一.适配器模式 适配器模式将某个类的接口转换成客户端期望的另一个接 ...

  7. 「POJ3436」ACM Computer Factory题解

    题意: 有很多台机器,可以把物件从一种状态改装成另一种状态,初始全为\(0\),最终状态全为\(1\),让你可以拼凑机器,请问最大总性能为多少,且要求输出方案. 题解: 这道题是真的水啊,我不想写太多 ...

  8. 【动画消消乐】HTML+CSS 自定义加载动画 061

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- 自我介绍ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专 ...

  9. python 构造函数 析构函数

    #构造函数是在对象被创建是自动调用的方法,用来完成初始化操作class Test(object): def __init__(self, name): self.name = name print(' ...

  10. centos7 源码安装指定版本的php7

    很多时候可能会遇到需要手动源码安装软件的时候,所以自己实践了一把,并且把安装过程中遇到的问题,以及在网上找到的解决办法(实测有效)都记录下来,方便日后学习实践. 1. 系统环境 # cat /etc/ ...