喵星之旅-狂奔的兔子-svn数据迁移

svn如果是同版本同系统迁移,只需要复制粘贴即可。如果跨大版本迁移,需要使用仓库的导出、导入功能。对于下仓库可直接执行,对于大仓库需要分批导入。文件过大,多次传输校验md5失败。实测结果7g正常,83g失败。

查看总版本数

1
svnlook youngest H:\Repositories\reins_svn

假设结果为38000。

每 5000 版本一批

最后一批单独处理

1
2
3
4
5
6
7
svnadmin dump -r 0:5000 H:\Repositories\reins_svn > H:\svn_backup\reins-r0-5000.dump
svnadmin dump -r 5001:10000 H:\Repositories\reins_svn > H:\svn_backup\reins-r5001-10000.dump
svnadmin dump -r 10001:15000 H:\Repositories\reins_svn > H:\svn_backup\reins-r10001-15000.dump
svnadmin dump -r 15001:20000 H:\Repositories\reins_svn > H:\svn_backup\reins-r15001-20000.dump
svnadmin dump -r 20001:25000 H:\Repositories\reins_svn > H:\svn_backup\reins-r20001-25000.dump
svnadmin dump -r 25001:30000 H:\Repositories\reins_svn > H:\svn_backup\reins-r25001-30000.dump
svnadmin dump -r 30001:35000 H:\Repositories\reins_svn > H:\svn_backup\reins-r30001-35000.dump

传输到目标服务器

文件传输到目标服务器。方式随意。对两方文件进行md5校验。

文件名称根据实际情况修改。

1
certutil -hashfile "reins-r0-5000.dump" MD5

如果结果不一致,说明文件传输失败。

创建新仓库

路径和文件名根据实际情况修改。

1
svnadmin create F:\Repositories\reins_svn

依次导入(按顺序)

路径和文件名根据实际情况修改。

1
2
3
4
5
6
7
svnadmin load F:\Repositories\reins_svn < F:\svn_backup\reins-r0-5000.dump
svnadmin load F:\Repositories\reins_svn < F:\svn_backup\reins-r5001-10000.dump
svnadmin load F:\Repositories\reins_svn < F:\svn_backup\reins-r10001-15000.dump
svnadmin load F:\Repositories\reins_svn < F:\svn_backup\reins-r15001-20000.dump
svnadmin load F:\Repositories\reins_svn < F:\svn_backup\reins-r20001-25000.dump
svnadmin load F:\Repositories\reins_svn < F:\svn_backup\reins-r25001-30000.dump
svnadmin load F:\Repositories\reins_svn < F:\svn_backup\reins-r30001-35000.dump

验证完整性

方法一:安静模式(推荐)

1
svnadmin verify -q F:\Repositories\reins_svn

只输出错误,正常版本不显示。没输出就是没问题。

方法二:输出到文件

1
svnadmin verify F:\Repositories\reins_svn > verify-result.txt 2>&1

查看版本数

svnlook youngest F:\Repositories\reins_svn

最后一批处理

之前的操作都可以在老库正常运行情况下执行。最后部分需要关停老库情况运行,然后导入新库。启用新库。

1
2
3
4
5
6
老库
svnadmin dump -r 30001:35000 H:\Repositories\reins_svn > H:\svn_backup\reins-r35001-38000.dump
两边均执行
certutil -hashfile "reins-r35001-38000.dump" MD5
新库
svnadmin load F:\Repositories\reins_svn < F:\svn_backup\reins-r35001-38000.dump

账号处理

新老版本差异过大则文件无法直接识别,需要手动单独配置帐号密码和权限。

文章目录
  1. 查看总版本数
  2. 每 5000 版本一批
  3. 传输到目标服务器
  4. 创建新仓库
  5. 依次导入(按顺序)
  6. 验证完整性
  7. 查看版本数
  8. 最后一批处理
  9. 账号处理
|