svn仓库一般都是会配置svnsync的实时备份仓库,备库会从主库一个版本一个版本拷贝,但是如果主库已经有几十万版本后,想通过简单的svnsync init一个新的备份仓库,然后从0版本开始sync,所需的时间无法估计
为了快速重建备份,可以使用下面的方法来处理
1. 首先将主库hotcopy一份
svnadmin hotcopy reponame reponame-bak
2. 将热备的备份同步到备机
rsync -avz reponame-bak username@bakserver:/svnroot-path
3. 在备机增加改备库的svn权限
4. 对备库设置同步属性
#设置主库的uuid
svn ps svn:sync-from-uuid 主库的uuid --revprop -r 0 http://bakserver/repo/reponame
#设置主库的url
svn ps svn:sync-from-url http://masterserver/repo/reponame --revprop -r 0 http://bakserver/repo/reponame
#设置热备的最新版
lastver=`svnlook youngest reponame-bak`
svn ps svn:sync-last-merged-rev $lastver --revprop -r 0 http://bakserver/repo/reponame
5. 同步hotcopy后新提交的版本
svnsync sync http://bakserver/repo/reponame