svn 备份方式对比分析
一般采用三种方式:
- ,svnadmin dump
- ,svnadmin hotcopy
- ,svnsync
注意, svn 备份不宜采用普通的文件拷贝方式 (除非你备份的时候将库暂停), 如 copy,rsync 命令. 曾经用 rsync 命令来做增量和全量备份, 在季度备份检查审计中, 发现备份出来的库大部分都不可用, 因此最好是用 svn 本身提供的功能来进行备份.
优缺点分析:
第一种
svnadmin dump 是官方推荐的备份方式
优点是: 比较灵活, 可以全量备份也可以增量备份, 并提供了版本恢复机制.
缺点是: 如果版本比较大, 如版本数增长到数万, 数十万, 那么 dump 的过程将非常慢; 备份耗时, 恢复更耗时; 不利于快速进行灾难恢复.
个人建议在版本数比较小的情况下使用这种备份方式.
第二种
svnadmin hotcopy 原设计目的估计不是用来备份的, 只能进行全量拷贝, 不能进行增量备份;
优点是: 备份过程较快, 灾难恢复也很快; 如果备份机上已经搭建了 svn 服务, 甚至不需要恢复, 只需要进行简单配置即可切换到备份库上工作.
缺点是: 比较耗费硬盘, 需要有较大的硬盘支持 (俺的备份机有 1TB 空间, 呵呵).
第三种
svnsync 实际上是制作 2 个镜像库, 当一个坏了的时候, 可以迅速切换到另一个. 不过, 必须 svn1.4 版本以上才支持这个功能.
优点是: 当制作成 2 个镜像库的时候起到双机实时备份的作用;
缺点是: 当作为 2 个镜像库使用时, 没办法做到 "想完全抛弃今天的修改恢复到昨晚的样子"; 而当作为普通备份机制每日备份时, 操作又较前 2 种方法麻烦.
svnadmin dump 方式
SVN 迁移需要做如下操作:
将原来的 Repository 导出为一个文件 dumpfile:
svnadmin dump 原先的 repos 的目录路径 (/repository/directory)> dumpfile
如:
svnadmin dump /home/svn/jiekou> /home/svn/jiekou_bak
在另外一台机器上配置同样的 SVN 服务器:
安装 SVN
root@pts/0 # yum -y install subversion
创建 svn 版本库目录
mkdir -p /home/svn/jiekou
创建版本库
- svnadmin create /home/svn/jiekou/
- root@pts/0 # ll /home/svn/jiekou/
总用量 24
drwxr-xr-x 2 root root 4096 2 月 19 14:42 conf
drwxr-sr-x 6 root root 4096 2 月 19 14:42 db
-r--r--r-- 1 root root 2 2 月 19 14:42 format
drwxr-xr-x 2 root root 4096 2 月 19 14:42 hooks
drwxr-xr-x 2 root root 4096 2 月 19 14:42 locks
-rw-r--r-- 1 root root 229 2 月 19 14:42 README.txt
将 dumpfile 导入到新的 repository 目录中:
svnadmin load 新建的 repos 的目录路径 (/repository/directory) <dumpfile
如:
svnadmin load /home/svn/jiekou < /home/svn/jiekou_bak
将原先服务器的配置文件备份后复制到新服务器中:
/home/svn/jiekou/conf 目录下
authz,passwd,svnserve.conf 文件
svnadmin hotcopy 方法
备份:
svnadmin hotcopy /home/svn/jiekou//home/svn/jiekou_bak -clean-logs
如果你传递 - clean-logs 选项, svnadmin 会执行热拷贝操作, 然后删除不用的 Berkeley DB 日志文件. 你可以在任何时候运行这个命令得到一个版本库的安全拷贝, 不管其它进程是否使用这个版本库.
还原:
svnadmin hotcopy /home/svn/jiekou_bak /home/svn/jiekou/
linux 下重新定位 SVN URL 方法
如果更换了 SVN 服务器, 就需要重新定位, 指向新的 SVN URL. 重新定位命令:
svn switch --relocate 原 svn 地址 新 svn 地址
例子:
root@pts/0 # svn info
路径: .
URL: svn://192.168.0.2/youyuan/huluweb
版本库根: svn://192.168.0.2/youyuan
版本库 UUID: 8cb80f63-1ffe-4fea-9436-65ad52441f62
版本: 6868
节点种类: 目录
调度: 正常
最后修改的作者: yysx
最后修改的版本: 6868
最后修改的时间: 2016-02-15 16:49:25 +0800 (一, 2016-02-15)
root@pts/0 # svn switch --relocate svn://192.168.0.2/youyuan/huluweb svn://192.168.20.10/youyuan/huluweb
认证领域: <svn://192.168.20.10:3690> /home/svn/youyuan
"root" 的密码:
认证领域: <svn://192.168.20.10:3690> /home/svn/youyuan
用户名: yysx
"yysx" 的密码:
-----------------------------------------------------------------------
注意! 你的密码, 对于认证域:
<svn://192.168.20.10:3690> /home/svn/youyuan
只能明文保存在磁盘上! 如果可能的话, 请考虑配置你的系统, 让 Subversion
可以保存加密后的密码. 请参阅文档以获得详细信息.
你可以通过在 "/root/.subversion/servers" 中设置选项 "store-plaintext- passwords" 为 "yes" 或 "no",
来避免再次出现此警告.
-----------------------------------------------------------------------
保存未加密的密码 (yes/no)?yes
root@pts/0 # svn info
路径: .
URL: svn://192.168.20.10/youyuan/huluweb
版本库根: svn://192.168.20.10/youyuan
版本库 UUID: 8cb80f63-1ffe-4fea-9436-65ad52441f62
版本: 6868
节点种类: 目录
调度: 正常
最后修改的作者: yysx
最后修改的版本: 6868
最后修改的时间: 2016-02-15 16:49:25 +0800 (一, 2016-02-15)
来源: http://blog.51cto.com/chaichuan/2155625