バージョン管理サーバのデータを週一回直接バックアップするには以下を実行します。
作成したファイル"/etc/cron.weekly/svn_backup"の内容を以下のようにします。
バックアップしたい複数のリポジトリについて上のように羅列すればよいです。
多くの場合、バックアップファイルはネットワーク共有できる場所におき、
名前には日付をつけたいので、上の"tarball"変数は以下のようにするとよいでしょう。
ちなみに、特定のリポジトリ(例:"sandbox")をいったん削除し、
バックアップファイル(例:"svn-sandbox-20080101050000.tar.gz")から
復元するには以下を実行します。
ところで直接バックアップする代わりに
SVNのダンプデータをバックアップすることもできます。
バージョン管理サーバのダンプデータデータを週一回バックアップするには以下を実行します。
作成したファイル"/etc/cron.weekly/svn_dump"の内容を以下のようにします。
バックアップしたい複数のリポジトリについて
を羅列すればよいです。
バックアップファイルにはその名前に自動的に日付が付加されます。
バックアップファイルはネットワーク共有できる場所(dumppath変数で調整)におき、
リポジトリの位置はreppath変数で調整できます。
ちなみに、特定のリポジトリ(例:"sandbox")をいったん削除し、
バックアップファイル(例:"svn-sandbox-20080101050000.tar.gz")から
復元するには以下を実行します。
なお、一週間のうちのいつ行われるかは"/etc/crontab"の設定によるので、
日曜日の早朝4:15に行いたいのであれば
のようにしておく必要があります。
$ su -
# cd /etc/cron.weekly
# touch svn_backup
# chown root:root svn_backup
# chmod 755 svn_backup
作成したファイル"/etc/cron.weekly/svn_backup"の内容を以下のようにします。
#!/bin/sh
/etc/init.d/apache2 stop
cd /mnt/storage/svn
rep=<リポジトリAの名前>
tarball=<作成するバックアップファイルのフルパス>
tar zcf $tarball $rep
chown apache:apache $tarball
rep=<リポジトリBの名前>
tarball=<作成するバックアップファイルのフルパス>
tar zcf $tarball $rep
chown apache:apache $tarball
/etc/init.d/apache2 start
バックアップしたい複数のリポジトリについて上のように羅列すればよいです。
多くの場合、バックアップファイルはネットワーク共有できる場所におき、
名前には日付をつけたいので、上の"tarball"変数は以下のようにするとよいでしょう。
tarball=/mnt/storage/dav/<共有スペース名>/svn/$rep/svn-$rep-`date "+%Y%m%d%H%M%S"`.tar.gz
ちなみに、特定のリポジトリ(例:"sandbox")をいったん削除し、
バックアップファイル(例:"svn-sandbox-20080101050000.tar.gz")から
復元するには以下を実行します。
$ su-
# /etc/init.d/apache2 stop
# cd /mnt/storage/svn
# rm -rf sandbox
# tar zxf svn-sandbox-20080101050000.tar.gz
# /etc/init.d/apache2 start
ところで直接バックアップする代わりに
SVNのダンプデータをバックアップすることもできます。
バージョン管理サーバのダンプデータデータを週一回バックアップするには以下を実行します。
$ su -
# cd /etc/cron.weekly
# touch svn_dump
# chown root:root svn_dump
# chmod 755 svn_dump
作成したファイル"/etc/cron.weekly/svn_dump"の内容を以下のようにします。
#!/bin/sh
# global common
reppath=/mnt/storage/svn
timestamp=`date "+%Y%m%d%H%M%S"`
svndump () {
dumpball=$dumppath/$rep/svn-$rep-$timestamp.bz2
svnadmin dump $reppath/$rep | bzip2 -z > $dumpball
chown apache:apache $dumpball
}
# local common
dumppath=/mnt/storage/dav/project2/applications/svn
# repository project2_application1
rep=project2_application1
svndump
# repository project2_application2
rep=project2_application2
svndump
バックアップしたい複数のリポジトリについて
rep=<リポジトリ名>
svndump
を羅列すればよいです。
バックアップファイルにはその名前に自動的に日付が付加されます。
バックアップファイルはネットワーク共有できる場所(dumppath変数で調整)におき、
リポジトリの位置はreppath変数で調整できます。
ちなみに、特定のリポジトリ(例:"sandbox")をいったん削除し、
バックアップファイル(例:"svn-sandbox-20080101050000.tar.gz")から
復元するには以下を実行します。
$ su-
# cd /mnt/storage/svn
# rm -rf sandbox
# svnadmin create /mnt/storage/svn/sandbox
# chown -R apache:apache sandbox
# bzcat svn-sandbox-20080101050000.bz2 | svnadmin load /mnt/storage/svn/sandbox
なお、一週間のうちのいつ行われるかは"/etc/crontab"の設定によるので、
日曜日の早朝4:15に行いたいのであれば
15 4 * * 0 root rm -f /var/spool/cron/lastrun/cron.weekly
のようにしておく必要があります。
0 件のコメント:
コメントを投稿