首页 > svn > SVN仓库迁移
2015
07-19

SVN仓库迁移

将一台服务器上已有的SVN仓库数据整体迁移到另外一台机器上,要保留所有的版本号和版本信息,需要以下过程来解决

先到新的机器上面安装相同版本的svn 以防各其它莫名问题
No.1 将准备要迁移的仓库导出 命令: svnadmin dump 仓库名 > svn_dump

No.2 在新的服务器上创建心的仓库 命令: svnadmin create SVNROOT

No.3 导入刚导出的文件svn_dump 命令: svnadmin load SVNROOT < svn_dump

// 注意,以上操作会导致所有的配置丢失,比如密码、权限控制等,只要将原有的conf文件覆盖新的就可以了

在整个操作的过程中要注意仓储路径问题,为避免出错,可以使用绝对路径来表示以上内容,仅以No.3 做实例解析

svnadmin load /data/svn/sa/ < /opt/svnback/sa.dump

因为我svn下面好几个数据仓库,而且比较大,打算做增量备份,加写了个脚本先全部,然后根据版本号去做增量,

#!/bin/bash

DATE=`date ‘+%F’`       #定义时间变量,用于文件名后缀

SVN_DIR=`ls /data/svn/ -l|awk ‘{print $9}’|grep -v “conf”`               #定义SVN库目录变量

SVN_BAK_DIR=/data/7_134/$DATE

mkdir -p /data/7_134/$DATE       #定义备份文件存放目录变量

echo ‘0’ > /opt/jsb_svn_id          #初始化版本号,全库备份一定是从0版本号开始

for i in $SVN_DIR

do

NUM1=$(cat /opt/jsb_svn_id)         #取初始化版本号

NUM2=$(svnlook youngest /data/svn/$i)   #取当前最新的版本号

#开始备份

/usr/local/subversion/bin/svnadmin dump /data/svn/$i  -r $NUM1:$NUM2  –incremental >  $SVN_BAK_DIR/”$i”_”$DATE”

#判断备份是否成功,若成功,则记录当前最新的版本号到临时文件中,用于下次增量备份使用

if [ $? -eq 0 ];

   then

   echo “$i” = $NUM2  > /opt/”$i”.svn_id

   else

   echo “backup fail….”

fi

done

以后做增量的话就把NUM1 定义成读起NUM1=$(cat /opt/”$i”.svn_id)         #取初始化版本号

就可以了

最后编辑:
作者:saunix
大型互联网公司linux系统运维攻城狮,专门担当消防员

留下一个回复