迁移SVN版本库到云服务器需完整导出dump文件、创建同名空仓库并精确导入,同时确保SVN版本兼容、路径一致、权限同步,否则将导致权限丢失或认证失败。

迁移现有 SVN 版本库到云服务器并保持权限不变,核心在于“完整导出 + 精确还原 + 权限文件同步”,不能只复制仓库目录或仅导入 dump 文件。云服务器环境(如 Linux)与原服务器的 SVN 版本、操作系统、用户体系可能不同,必须分步处理,否则权限丢失、认证失败、路径报错等问题几乎必然出现。
一、导出完整版本库(含全部历史和元数据)
在旧服务器上执行全量 dump,确保不跳过任何修订版本:
- 关闭 SVN 服务(避免写入冲突):停止
svnserve或 VisualSVN Server 服务 - 执行导出命令(以仓库路径
/var/svn/myrepo为例):svnadmin dump /var/svn/myrepo > /backup/myrepo.dump - 若仓库较大,可加
--quiet减少输出干扰;不建议压缩后再导入(需额外解压,易出错)
二、在云服务器上创建同名空仓库并导入
新仓库名称、路径层级应与旧环境一致,便于后续配置映射:
IT技术解决互联网公司网站模板是一款适合提供APP设计、网页开发、SEO优化、云服务、数据分析等服务的互联网公司宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。
- 安装相同或兼容版本的 Subversion(推荐 ≥1.9,避免低版本 dump 兼容问题)
- 创建空仓库:
svnadmin create /var/svn/myrepo - 导入 dump 文件:
svnadmin load /var/svn/myrepo - 导入成功后,
Revision 0到最新版本号应完全一致,可用svnlook youngest /var/svn/myrepo验证
三、同步权限与认证配置文件(关键步骤)
dump 文件不包含用户密码、访问控制规则等运行时配置,必须手动迁移以下文件:
-
用户密码文件:如
conf/passwd(明文密码)或conf/htpasswd(Apache HTTP 模式),直接覆盖新仓库对应路径 -
权限控制文件:
conf/authz(定义路径级读写权限),注意检查其中的仓库别名(如[myrepo:/])是否与新仓库名匹配 -
服务主配置:
conf/svnserve.conf(启用 auth-access、password-db、authz-db 路径等),尤其确认realm值一致,否则客户端缓存凭据会失效 - 若使用 Apache + mod_dav_svn,还需同步
/etc/httpd/conf.d/subversion.conf中的SVNParentPath和AuthzSVNAccessFile指向
四、验证与客户端适配
完成迁移后必须逐项验证,避免“看似成功实则不可用”:
- 启动服务(
svnserve -d -r /var/svn或重启 httpd),用svn list svn://云服务器IP/myrepo测试可访问性 - 用任意已知账号检出一个文件,确认能正常提交、更新、查看 log
- 本地 TortoiseSVN 客户端右键 → Relocate,将旧 URL(如
svn://192.168.1.100/myrepo)替换为新地址(如svn://云公网IP/myrepo) - 服务器端工作副本(如 Web 项目根目录)需执行:
svn switch --relocate svn://old-addr/myrepo svn://new-addr/myrepo
权限不变的前提是配置文件完整迁移且路径未变动。只要 passwd、authz、svnserve.conf 三者准确同步,用户组、路径权限、密码强度等都会原样保留。整个过程不复杂但容易忽略配置文件细节。

















