我们的 VisualSVN 服务器 (SE) 目前将其存储库存储在 "C:\Repositories" 中,但鉴于我们存储库的增长,C: 驱动器开始填满。我们想将整个存储库根移动到服务器中的第二个驱动器 (D:)在可预见的未来,这有足够的空间。
我发现这个问题告诉我如何更改根,但由于该问题涉及全新安装,因此保留现有数据不是问题。经过一些研究,我发现有几种方法可以保留现有存储库:
- 资源管理器中的直接文件复制:应该保留所有数据,但我犹豫是否信任Windows来完成此任务
-
svnadmin dump
到转储文件,然后在新位置加载转储文件 - 将存储库
svnadmin hotcopy
到新位置
我想听听您对哪种方法更可取的意见。如果它足够强大,我更喜欢热复制方法,因为转储所有存储库需要相当长的时间。此处描述了转储方法,但似乎包括对我的情况不必要的步骤,因为我将所有内容都保留在同一台服务器上。
此外,我想问一下我们如何最好地进行此迁移,以将停机时间降至最低。我想阻止用户在复制文件时提交更改。我可以在更改根目录和复制文件时关闭SVN服务吗?
最后,我想借此机会将服务器从 2.5.2 升级到 2.5.8。我应该在文件复制后执行此操作吗?我是否应该先重新启动服务,然后再次关闭它,以便它处理和检查移动的存储库?
我建议您为每个存储库或xcopy /E /H C:Repositories D:Repositories
使用svnadmin hotcopy
。不要忘记复制授权文件(authz,authz-windows和htpasswd)。您必须在迁移之前停止VisualSVN服务器。
svnadmin dump
不是必需的,正如您提到的,该过程非常耗时。
最好在存储库迁移和需要重新配置后升级 VisualSVN 服务器。在某些升级中,VisualSVN 服务器需要访问存储库文件夹才能升级。
以下是您可以使用的一些步骤。使用此 python 脚本将使您的任务更轻松,并使您将来对存储库进行每日备份。
- 在 VisualSVNServer 上,转到"属性"并将"存储库根目录"更改为新位置。假设"D:\存储库"。
- 下载 Python 2.7(如果您尚未安装它)。
- 下载"hot-backup.py"
-
从命令窗口执行以下操作。
hot-backup.py C:Repositories<YourRepoName> D:Repositories<YourRepoName>
-
升级您的 SVN 版本
这应该可以解决问题。祝你好运!!!
- Xcopy SVN-父级到新位置
- 编辑(手动)VisualSVN 服务器的 httpd.conf,
SVNParentPath
参数 - 从MMC小程序重新启动VisualSVN服务器