SVN DB 损坏 - 无法打开请求的 SVN 文件系统

SVN DB 损坏 - 无法打开请求的 SVN 文件系统

我们今天计划将 svn 服务器从 debian 3.1 迁移到 6.0。迁移之前,一些用户抱怨 svn db 损坏,如下所示,我们尝试使用命令 svnadmin recovery 进行恢复,但没有成功。

    [Wed Feb 22 23:14:30 2012] [error] Could not fetch resource information.  [500, #0]<br>
    [Wed Feb 22 23:14:30 2012] [error] Could not open the requested SVN filesystem     [500, #160029]<br>
    [Wed Feb 22 23:14:30 2012] [error] Could not open the requested SVN filesystem  [500, #160029]<br>
    [Wed Feb 22 23:14:31 2012] [error] (20014)Error string not specified yet: Berkeley DB error while opening environment or filesystem /var/svn/reponame/db:\nPermission denied

    The below error show when I tried to access from broser.

     <D:error><C:error/><m:human-readable errcode="160029">
     Could not open the requested SVN filesystem
     </m:human-readable></D:error>

请帮我解决这个问题。

答案1

/var/svn/reponame/db: Permission denied是问题所在。

哪个服务或用户正在尝试打开数据库?看起来它是一台 Apache 服务器 - Apache 用户是否有权访问 repo 的目录(以及遍历指向它的目录的权限)?

由于这是一个权限问题,所以有些事情已经发生了变化——为了准备迁移做了哪些改变?

答案2

虽然使用 Berkely DB 进行 svn 速度很快,但它可能会损坏。使用 FSFS 文件系统时,我从未遇到过损坏的情况。而且我管理着全球相当多的 30+ GB 存储库。

话虽如此,我没有尝试修复损坏的 BDB svn 存储库的经验,但我认为除了按照 Shane Madden 的建议查看并可能修复文件权限问题之外,您还可以尝试转储存储库,然后将其导入另一个空的存储库。该过程可能会解决您遇到的损坏问题。值得一试。

另外,为了便于将来参考,请考虑使用带有钩子脚本的实时同步的从属存储库。或者至少按日或按小时创建热副本。

相关内容