使用 svnadmin load 恢复 svn 版本库必须先创建空版本库,再导入 dump 文件;不可向已有数据的库执行 load,否则报错;需确保目标路径干净、权限正确,并按顺序导入增量文件,最后用 svnlook youngest 验证版本号。

使用 svnadmin load 恢复 SVN 版本库,核心前提是:必须先创建一个空版本库,再将 dump 文件导入其中。不能直接往已有数据的库上 load,否则会出错(比如报“当前版本库不存在相对源版本”这类错误)。
前提:准备一个干净的新版本库
load 命令只接受空库作为目标。操作前务必确认:
- 目标路径下不存在同名版本库,或已彻底删除旧库(包括隐藏的
db/、conf/等子目录) - 用
svnadmin create /path/to/newrepo新建一个空库 - 检查新库权限(尤其在 Linux 上),确保运行 svn 服务的用户有读写权限
基础恢复命令格式
最常用的是全量恢复:
svnadmin load /path/to/newrepo- 注意方向:dump 文件在右侧(输入流),newrepo 在左侧(目标)
- 路径必须是版本库根目录(即包含
conf/、db/的那一层)
带前缀路径导入(可选)
如果想把 dump 内容导入到新库的某个子目录下(例如原库是 /trunk,你想放到新库的 /project/trunk),可用 --parent-dir:
svnadmin load /path/to/newrepo --parent-dir project- 这会把 dump 中所有路径自动加上
/project/前缀 - 适用于分库整理或调整项目结构
增量文件连续导入
若备份是分段的(如 0-1000.dump、1001-2000.dump),需按顺序依次 load:
- 先 load 第一个(全量或含 rev 0 的段)
- 再按 revision 递增顺序 load 后续
--incremental生成的 dump 文件 - 顺序错乱或跳号会导致失败,例如报 “参考数据比最旧转存版本还旧”
验证是否成功
导入完成后,立即检查:
- 执行
svnlook youngest /path/to/newrepo,确认版本号与 dump 文件中最高版本一致 - 用客户端检出最新版本,查看文件结构和历史日志是否完整
- 如有钩子脚本(hooks),需手动复制并赋执行权限











