連絡先 トップに戻る 最初に戻る 前に戻る 次へ進む
$Date: 2017-05-06 22:21:48 +0900 (2017/05/06 (土)) $
$Revision: 1117 $

Subversionリポジトリのバックアップ( UNIX系OS編 )

概要

前のページ で svn_backup_dumps_py.py を 紹介しましたが、実運用で使用する場合のやり方を簡単に説明します。

バックアップは以下の二種類の方法で行います。

バックアップしたデータを rsync で別マシンにコピーします。

cron によるバックアップ

cron の設定

以下のコマンドを実行します。
$ crontab -e
起動したエディタに以下のような感じで入力する。
SHELL=/bin/sh

# 毎日朝6時にバックアップする。
0 6 * * * /home/svnbackup/backup_svn.sh

実際にバックアップを行うスクリプトの例

backup_svn.sh
#!/bin/sh

# svnadmin のある場所を指定する。
# svn-backup-dumps.py は 内部で svnadmin を呼び出すので
# svnadmin へのパスを通す必要があります。
PATH=$PATH:/usr/bin

# python のパス
PYTHON=/usr/bin/python

# repository path
REPOS=/var/svn/svnrepos

# svn-backup-dumps.py のパス
SVNBACKUPDUMPS=/usr/bin/svn-backup-dumps.py

# バックアップ先
BACKUPDIR=/home/svnbackup/fullbackup

# スクリプトの実行前にディレクトリを作成しておく
mkdir -p $BACKUPDIR

# backup svn repository
$PYTHON $SVNBACKUPDUMPS $REPOS $BACKUPDIR

リンク

cron の設定ガイド
http://www.express.nec.co.jp/linux/distributions/knowledge/system/crond.html

post-commit によるバックアップ

post-commit の例
#!/bin/sh
#
# POST-COMMIT HOOK
#
# The post-commit hook is invoked after a commit.  Subversion runs
# this hook by invoking a program (script, executable, binary, etc.)
# named 'post-commit' (for which this file is a template) with the 
# following ordered arguments:
#
#   [1] REPOS-PATH   (the path to this repository)
#   [2] REV          (the number of the revision just committed)
#    ....
#
REPOS="$1"
REV="$2"

# svnadmin のある場所を指定する。
# svn-backup-dumps.py は 内部で svnadmin を呼び出すので
# svnadmin へのパスを通す必要があります。
PATH=$PATH:/usr/bin

# python のパス
PYTHON=/usr/bin/python

# svn-backup-dumps.py のパス
SVNBACKUPDUMPS=/usr/bin/svn-backup-dumps.py

# バックアップ先
BACKUPDIR=/home/svnbackup/incbackup

# スクリプトの実行前にディレクトリを作成しておいてください。
# このスクリプトのなかで以下のコマンドを実行するようにしても
# いいかもしれません。
#	mkdir -p $BACKUPDIR
#
# その際、post-commit が実行されるユーザーの権限で書き込みが
# できるように設定しておいてください。
# 例:
#	Apache(mod_dav_svn) を使う場合 : apache or nobody
#	svnserve を使う場合            : 多分 svn (未確認)
#

# backup svn repository
$PYTHON $SVNBACKUPDUMPS -r $REV $REPOS $BACKUPDIR

rsync によるバックアップ

リポジトリをダンプしてファイルにバックアップした後、可能なら rsync で別マシンにバックアップしましょう。

同じマシンの同じハードディスクにバックアップを置いている場合、 ハードディスククラッシュからデータを救うことはできません。 同じマシン内でも、別のバードディスクに保存すれば、リスクを 軽減できますが、別マシンにした方が安心です。

rsync を使うことにより、効率的に別マシンにバックアップを 取ることができます。このページでは rsync の具体的な方法は 説明しませんので、以下のリンク等を参照してください。

リンク