SubversionのDBが壊れたときの修復スクリプト

SubversionのDBが壊れたときに、svnadmin recoverでは回復しなかったので
スクリプトを書いて解決しました。

以前[2006-10-03-1]にSubversionのDBが壊れてしまったときに、DBを再構築したのですが
それはSubversionを使い始めたばかりだからです。
今ではリポジトリのサイズが300Mbyteを超えていて、
再構築するのが非常に面倒そうです。

なので、真剣に修復する方法を探したら、方法が見つかりました。
以下のページに書いてあった方法を試したのです。

Subversion Users: Re: DB Corruption

一回全てのdbファイルとlogファイルを消して、
bdbなファイルを全てダンプしてロードするのです。
そうすると直ってしまうのです。

以下が、SubversionのDBを修復するスクリプトです。自己責任でどうぞ。

recover.sh


#!/bin/sh

mv log.* /tmp
mv __db.* /tmp

for bdb in changes copies nodes representations revisions strings transactions uuids lock-tokens locks
do
  mv $bdb $bdb.org
  db4.2_dump $bdb.org | db4.2_load $bdb
done

svnadmin recover /path/to/svnrepos/
svnadmin verify /path/to/svnrepos/


このスクリプトを/path/to/svnrepos/db/へ設置して実行してひたすら待つのです。
「db4.2_*」は自分の環境で使えるBerkeley DB関連のコマンドに
置き換えてご利用ください。


投稿者:としのり  日時:23:59:59 | コメント | トラックバック |
blog comments powered by Disqus