svn备份、还原、迁移一条龙方案

备份篇

前言

此处要备份的库名以test为例服务器

目的

当svn服务器发生灾难级故障时,咱们能够利用备份文件对公司资产:svn代码进行恢复ide

面临的现状

整个svn备份文件很是大,若是每次进行都全量备份;将消耗很是多的硬盘资源。svn

解决方案

使用全量备份+增量备份的方案;对svn代码进行异地备份
每月1号进行一个完整备份,其余时候进行差别备份工具

一:全量备份步骤

  • 1.使用svnadmin dump 仓库路径 > dumpfile日志

    svnadmin dump /data/svn/test > /data/backup/svn/test_dumpfile
  • 2.使用命令获取仓库的提交版本数,为后面的增量作好准备
    svnlook youngest 仓库路径;如
    [root@localhost svn]# svnlook youngest /data/svn/test/
    73988

    备注:73988是当前仓库的版本提交数量code

二:增量备份步骤

  • 1.备份差别的svn版本数
    上1次全量备份的svn版本数有:73881;如今总有73988个版本数量,中间的差别为:73882-73988(在全量备份的基础上+1)
    svnadmin dump /data/svn/test -r 73882:73988 --incremental > /data/backup/svn/test_dumpfile_73882-73988

备份策略总结

凌晨1点开始备份,先使用svnlook youngest获取版本数量,而后再全量的压缩备份。将全量备份的版本号记录好,下次增量备份的时候,能够用该版本号+1进行差别备份资源

还原数据篇

背景

上面咱们经过svn的官方备份工具svnadmin dump,对svn仓库已经进行了备份;如今咱们对数据进行还原开发

操做环境

  • 1.准备好svn备份数据:通常含有全量文件和增量备份文件
  • 2.准备好一台机器,上面搭建好svn便可

全量还原步骤

  • 1.执行导入命令

    将全量备份的数据,导入到新机器搭建好的svn上

    svnadmin load /data/svn/test/ < /data/backup/svn/test_dumpfile
  • 2.检查svn版本数;看到已是还原成功了
    [root@localhost svn]# svnlook youngest /data/svn/test/
    73881
  • 3.确认svn的提交日志内容,是否有问题
  • 4.和svn的使用同窗,确认有无问题

增量还原步骤

  • 1.增量备份文件为:/data/backup/svn/test_dumpfile_73881-73988
svnadmin load /data/svn/test/ < /data/backup/svn/test_dumpfile_73881-73988
  • 2.当咱们看到Committed new rev 73989 (loaded from original rev 73988),表示还原成功
  • 3.再次使用svnlook查看提交的版本数
[root@localhost svn]# svnlook youngest /data/svn/test/
73988

迁移方案总结:

先利用全量备份,再利用增量备份进行还原,最后和客户端开发同窗协助确认下:还原的svn数据是否能够被正常使用。rem

迁移篇

前言

svn://192.168.1.1/test中包含了公司全部的项目A、项目B、项目C(除客户端代码外);不便于直接使用it

方法:

为了更好的区别项目,将不一样的项目使用不一样的版本库;从test中独立出来的子文件夹有:

  • 项目A
  • 项目B
  • 项目C

迁移原则:

尽量对项目开发的影响较小;

迁移目的机器

192.168.1.2;这台机器做为svn还原使用

迁移步骤:

1.先利用全量还原好数据
2.使用增量备份文件,对差别部分进行还原便可(通常是1天的数据)

先作好全量的还原

1.在项目二大群中发一个通知:svn版本库周末进行维护,周末暂停使用

2.使用完整备份的文件,过滤出须要的文件夹

svndumpfilter include 项目A < test_bak_0-90769 > 项目A_dumpfile
svndumpfilter include 项目B < test_bak_0-90769 > 项目B_dumpfile
# 若是包含了多个文件夹,能够用空格+文件夹名,表明多个目录
svndumpfilter include 项目C 17_项目C < test_bak_0-90769 > 项目C_dumpfile

3.在192.168.1.2新建好版本库

svnadmin create /data/svn/项目A
svnadmin create /data/svn/项目B
svnadmin create /data/svn/项目C

4.作好受权
准备好在用的人员信息,写到新版本库的受权文件中
5.使用步骤1的文件进行数据恢复

svnadmin load /data/svn/项目A < 项目A_dumpfile
svnadmin load /data/svn/项目B < 项目B_dumpfile
svnadmin load /data/svn/项目C < 项目C_dumpfile

经过增量备份,进行差别还原

1.准备差别文件
2.将差别部分进行还原
3.验证差别部分

6.验证没有问题以后。将旧机器上面的文件隐藏移动到一个再也不使用的文件夹中;7/14天后确认没有影响后删除