我们今天计划将 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 的建议查看并可能修复文件权限问题之外,您还可以尝试转储存储库,然后将其导入另一个空的存储库。该过程可能会解决您遇到的损坏问题。值得一试。
另外,为了便于将来参考,请考虑使用带有钩子脚本的实时同步的从属存储库。或者至少按日或按小时创建热副本。