SVN (subversion) 的备份和还原

开发中常用到的一个版本控制软件就是SVN. 有时候, 需要对版本控制器的内容进行备份/还原或者迁移. 尽管用得比较少, 但是一旦用到, 该掌握的知识还是要掌握的.

环境: CentOS 6.6

svn的备份还原有三种方式, 这里重点介绍前两种:

  1. 官方提供的dump方法: 优点是稳定; 缺点也非常明显, 一旦版本过多或者内容本身多的时候, 备份和还原的过程就及其漫长, 不利于生产环境中快速上线. 版本少/内容少的时候, 可以考虑这个方法.
  2. hotcopy方法: 热拷贝的优点就是快, 缺点是比较耗费磁盘, 但一般这个方法比较常用.
  3. svnsync方法: 制作两个镜像的svn版本库, 一个崩溃以后迅速切换到另一个, 实际应用较少, 不做介绍.

下面对常用的方法进行介绍:

1. dump方法的介绍

假如, 版本库的路径是/var/svn/lius, 我们先备份.

备份:

# svnadmin dump /var/svn/lius > ~/svn.dump

还原: 需要先建立一个版本库, 再进行还原 (可以是不同的名称):

# svnadmin create /var/svn/liemer
# svnadmin load /var/svn/liemer < ~/svn.dump 
<<< 开始新的事务,基于原始版本 1
     * 正在增加路径: TestFile.txt ...完成。

------- 提交后版本 1 >>>

<<< 开始新的事务,基于原始版本 2
     * 正在增加路径: 1.jpg ...完成。
     * 正在增加路径: 2.jpg ...完成。
     * 正在增加路径: 3.jpg ...完成。
     * 正在增加路径: 4.jpg ...完成。

------- 提交后版本 2 >>>

将原来的配置文件信息, 复制到新的版本库的conf目录, 原来的可以备份到别处:

# pwd
/var/svn/liemerlius/conf
# ls
authz  passwd  svnserve.conf
# mkdir ../bak && mv * ../bak   // 先备份原来的配置文件
# cp /var/svn/lius/conf/* /var/svn/liemerlius/conf/    // 将原来的配置文件复制到这里, 重启svn服务
# ls
authz  bak  passwd  svnserve.conf
# killall svnserve
# svnserve -d -r /var/svn

windows上, 可以用TortoiseSVN测试一下, 本人测试是可以的.

2. dump增量备份方法的介绍

当然, 如果版本库的内容已经够多了, 一次性完全备份是不现实的. 我们可以定期进行增量备份, 节省很多的时间. 将来恢复的时候, 将各个分文件按顺序恢复即可.

首先, 应该知道版本库的已有版本, 在windows上, 按照下列方法进行:
这里写图片描述

这里写图片描述

这里的Revision就是版本号的信息.

增量备份和还原:

# svnadmin dump /var/svn/liemer -r 1:2 --incremental > ~/inc.bak    // 增量模式备份, 冒号前后是开始和结束的版本号
* 已转存版本 1。
* 已转存版本 2# svnadmin create /var/svn/liemerlius   // 可以创建, 也可以在一个已有的版本库里面进行还原.
# svnadmin load /var/svn/liemerlius < ~/inc.bak 
<<< 开始新的事务,基于原始版本 1
     * 正在增加路径: TestFile.txt ...完成。
------- 提交后版本 1 >>>
<<< 开始新的事务,基于原始版本 2
     * 正在增加路径: 1.jpg ...完成。
     * 正在增加路径: 2.jpg ...完成。
     * 正在增加路径: 3.jpg ...完成。
     * 正在增加路径: 4.jpg ...完成。
------- 提交后版本 2 >>>

同样的, 还原后可以在windows上进行验证.

3. hotcopy进行热备份和还原

备份的方法:

# svnadmin hotcopy /var/svn/lius/ ~/hotcopy.bak   // 后面是要备份的路径, 是一个目录
# file ~/hotcopy.bak
/root/hotcopy.bak: directory
# ls ~/hotcopy.bak
conf  db  format  hooks  locks  README.txt

–clean-logs选项,是svnadmin执行热拷贝操作时,删除不用的Berkeley DB日志文件。 可以在任何时候运行这个命令得到一个版本库的安全拷贝,不管其它进程是否使用这个版本库。

还原:

# svnadmin hotcopy ~/hotcopy.bak /var/svn/hotsvn
# ls /var/svn/hotsvn
conf  db  format  hooks  locks  README.txt
# killall svnserve
# svnserve -d -r /var/svn/

同样, 可以可以验证一下是否可用, 在windows建立新文件夹, 登录账号进行同步, 发现是可以的.

这里写图片描述

这里写图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值