svnadmin dump PATH_TO_REPOS 然后在目标服务器上 #svnadmin load PATH_TO_MIRROR

svnadmin dump PATH_TO_REPOS 然后在目标服务器上 #svnadmin load PATH_TO_MIRROR

我在不同的服务器上安装了 2 个 Debian Subversion,并决定关闭其中一台服务器。但在关闭之前,我想将一台服务器上的所有存储库移动至另一台服务器(包括所有历史修订等)。

这是怎么做到的?

我可以简单地复制 /var/lib/svn/ 的内容吗存储库名称到 /var/lib/svn/存储库名称在其他服务器上?还是还有更多情况?

我需要对权限/所有权做些什么吗?

答案1

如果 SVN 环境相同,则仅应复制文件,如果不相同:

  1. 在您要迁移的机器上使用 svnadmin 创建转储文件:
    svnadmin dump myrepos > 转储文件
    
  2. 在剩余的服务器上创建新的存储库
  3. 将转储文件加载到:
    svnadmin 加载新存储库<转储文件
  4. 复制任何自定义和/或钩子脚本位于旧服务器对面。
  5. 如果 URL 在交换机中发生了变化,转变任何工作副本均包含:
    svn 开关--重新定位http://new-server.lan/repos/repo

这一切都来自SVN 书籍

答案2

最好从旧存储库转储并加载到新存储库。这是将一个存储库迁移到另一个存储库的最干净、最“受支持”的方式。您可以尝试复制文件,但如果您没有在相同的处理器架构上移动到相同版本的 Subversion(是的 - 如果您使用 BerkeleyDB,您可能会遇到字节序问题......曾经在 Alpha 到 Intel SVN 的迁移中看到过这种情况),您可能会遇到问题。

看一下http://svnbook.red-bean.com/en/1.1/ch05s03.html,在标题为“迁移存储库”的部分下。

(当我们没有足够的临时空间来保存转储文件的副本时,我的一个朋友曾经通过 netcat 在两个盒子之间做过这件事!它也有效......)

答案3

有多种方法可以做到这一点:

  1. 停止 svn 服务器,然后复制目录的内容。
  2. svnadmin dump PATH_TO_REPOS 然后在目标服务器上 #svnadmin load PATH_TO_MIRROR

    请注意,svnadmin dump 不会转储您的存储库配置文件和挂钩脚本。

相关内容