当我尝试转储时出现 SVN 错误

SVN errors when i try to dump

我有一个可用的 SVN 存储库 (CollabNet Subversion Edge 4.0.11) 在 Windows (2012 R2) 上,转速为 62200 左右。 我正在将它移动到 Linux RedHat 6.6(CollabNet 版本 1.8.13)和 Apache/2.2.29。 我知道迁移的最佳方法是转储存储库。所以我 运行 下面的转储命令:

svnadmin dump -r 1:62268 F:\csvn\data\repositories\repos > G:\MyDump.dump

当我尝试转储 windows 存储库时,我在修订版 4255 处遇到错误:

svnadmin: E200002: Serialized hash malformed.

下一步我 运行 就在那一点之后另一个转储因为我想我可以通过将相邻的修订合并到损坏的修订中来解决这个问题所以我 运行 以下命令:

svnadmin dump -r 4257:62268 F:\csvn\data\repositories\repos > G:\My2dump.dump

这在修订版 16153 中出现了一个让我感到困惑的新错误:

svnadmin: E140001: zlib (uncompress): corrupt data: Decompression of svndiff data failed

然后当我运行第三次倾倒时,我是贪吃还是惩罚。我使用以下命令:

svnadmin dump -r 16154:62268 F:\csvn\data\repositories\repos > G:\My3dump.dump

但它只是挂起,似乎什么也没做。 这个存储库可以追溯到 10 多年前,只有过去 6 年是相关的。我能否以某种方式修改转储以提取过去 X 年或当前未损坏的修订并将其加载到新存储库中?所以我会从现在开始倾倒并倒退可以这么说吗? (只是一个想法) 我没有任何好的备份,因为那些服务器和磁带随着公司上一次搬迁而消失了。 谢谢, 大卫夫

Can I somehow modify the dump to extract the past X number of years or revisions from the present that are not corrupt and load that into the new Repository?

是的,理论上 - 转储是可读的文本文件。 但是我会建议在存储库 (svn log -r {DATE}) 中检测 "oldest needed" 修订并创建一组(相对较小的)从 REV 到 HEAD 的转储

So I would dump starting from the present and go backwards so to speak?

只有 "single revision per dump",这将是一场噩梦。转储是在另一个方向创建的:"from oldest to newest"

最后的注释

我敢肯定,您已经(至少尝试过)使用 svnadmin verify|recover|pack

检查并修复损坏的存储库(阅读有关 svnadmin 的可能性)