svn的备份和迁移其实可以理解为一回事,迁移就是把备份下来的内容导入到迁入的机器。
假设我们现在要从A机器迁移一个svn仓库到B机器。
首先,我们需要用svnadmin dump
命令将A机器中的svn仓库导出到文件中。
这个又分为全量导出和增量导出
- 全量导出
// 将demo仓库全量导出到/tmp/svn_dump/demo
svnadmin dump /var/svn/repos/demo > /tmp/svn_dump/demo
- 增量导出
// 将demo仓库的11222版本到22333版本导出到demo_11222_22333文件中
svnadmin dump /var/svn/repos/demo -r 11222:22333 --incremental > /tmp/svn_dump/demo_11222_22333
然后,我们把/tmp/svn_dump/目录下需要导入的文件放到B机器的某个目录下,可以用rsync发送过去。
假设我们把文件放到了B机器的/tmp/svn_load/目录。B机器的svn仓库也在/var/svn/repos/目录下。
那我们就可以在B机器执行svnadmin load
执行导入。
// 全量导入
svnadmin load /var/svn/repos/demo < /tmp/svn_load/demo
// 增量导入
svnadmin load /var/svn/repos/demo < /tmp/svn_load/demo_11222_22333
迁移完数据,我们还需要把svn的用户配置和权限配置也迁移过去。
这样,我们就可以实现迁移svn仓库的功能。这个方案也可以用于备份svn仓库数据。