カスタム検索

2009年6月11日木曜日

Subversionの移行とバックアップについて

ちょっとSubversionを移行する機会があったのでメモ

SVNを作成
svnadmin create repoName

バックアップの作成
svnadmin dump repoName > repo.dump

バックアップのリストア
svnadmin load repoName < repo.dump

ファイルを丸ごとコピーしてもいけるっぽいけど、環境によってはNGっぽいのでdumpを使う事にしました。

バックアップをする時は、必ずsvnのユーザで実行する事!rootはだめ!
dump した時にエラーが出る場合は repoName/db/log* のファイルが壊れている事があります。
だからと言って log* ファイルは結構大事なファイルなので、さくっと消してはいけません。

そんな時にはリカバリコマンド
svnadmin recover repoName

もちろんこれもsvnユーザで。rootユーザでやってリポジトリ壊れたのはいい思い出・・・

cronで常用バックアップしたい場合は svn-backup-dumps.py を使うと便利!
SVN1.4以降なら一緒にインストールされてます。
ここに詳しい事が乗っています。

こんな感じのスクリプトを作って

DUMP="/subversion-1.4.2/tools/server-side/svn-backup-dumps.py"
BACKUPDIR="/svnbackup/"

for var in `ls -F /svn/repos|grep /`
do
BKSVN="$BACKUPDIR$var"
mkdir $BKSVN
$DUMP -c 10 $var $BKSVN
done


crontab に設定
05 4 * * * root /root/svnbackup.sh

これでrepos以下にあるリポジトリ全部を /svnbackup へバックアップしてくれます、リポジトリが増えても安心!

0 件のコメント: