svn-hot-backupを使ったSubversionリポジトリの複数世代のフルバックアップ検証メモ
8198 ワード
環境
- CentOS 5.9 Final
- Subversion 1.6.11-11.el5_9
- Python 2.4.3
概要
svn-hot-backupを使ったSubversionリポジトリの複数世代のフルバックアップ。
cronを用いる。
- svn-hot-backupについては下記の記事が詳しい。 http://d.hatena.ne.jp/pasela/20090206/svn_backup
hot-backup.pyを起動するスクリプトは下記の記事を参考にした。
http://jehupc.exblog.jp/tags/SubVersion/異常検知はsyslogdの出力ファイルの監視で実現する予定。本記事には含まない。
環境導入
ただし、OSはセットアップ済みとする。
subversionのインストール
yum install subversion.x86_64
リポジトリの作成
mkdir -p /data/repository
cd /data/repository
svnadmin create projectA --fs-type fsfs
svnadmin create projectB --fs-type fsfs
バックアップディレクトリの作成
mkdir -p /backup/repository
検証用のコミットをcron仕込み
mkdir -p /data/checkout/
cd /data/checkout
svn checkout file:///data/repository/projectA
svn checkout file:///data/repository/projectB
auto_commit.sh
#!/bin/sh
FILE=`date +"%Y%m%d%H%M%S"`
cd /data/checkout/projectA
touch $FILE
svn add $FILE
svn commit -m "$FILE commit."
cd /data/checkout/projectB
touch $FILE
svn add $FILE
svn commit -m "$FILE commit."
svn_backup.sh
#!/bin/sh
REPO_DIR=/data/repository
BAK_DIR=/backup/repository
HOT_BACKUP=/usr/share/doc/subversion-1.6.11/tools/backup/hot-backup.py
EXIT_STATUS=0
# 保存世代数
export SVN_HOTBACKUP_BACKUPS_NUMBER=7
for REPO in `find $REPO_DIR -maxdepth 1 -mindepth 1 -type d`
do
$HOT_BACKUP --archive-type=gz $REPO $BAK_DIR
if [ $? = 0 ]; then
logger "SVN Backup done. repository:$REPO, $BKFILE"
echo "SVN Backup OK $BKFILE"
else
logger "SVN Backup NG $BKFILE"
echo "SVN Backup NG $BKFILE"
EXIT_STATUS=1
fi
done
exit $EXIT_STATUS
コミットとバックアップの定期実行
# テストなんで実行ペースは早くしてます。
crontab -e
* * * * * /data/script/incremental_commit.sh 1>/dev/null
*/5 * * * * /data/script/svn_backup.sh 1>/dev/null
実行経過
svn_backup.shの出力例
Beginning hot backup of '/data/repository/projectB'.
Youngest revision is 1
Backing up repository to '/backup/repository/projectB-1'...
Done.
Archiving backup to '/backup/repository/projectB-1.tar.gz'...
Archive created, removing backup '/backup/repository/projectB-1'...
SVN Backup OK
Beginning hot backup of '/data/repository/projectA'.
Youngest revision is 1
Backing up repository to '/backup/repository/projectA-1'...
Done.
Archiving backup to '/backup/repository/projectA-1.tar.gz'...
Archive created, removing backup '/backup/repository/projectA-1'...
SVN Backup OK
出力ファイル
[root@localhost repository]# ll
total 6336
-rw-r--r-- 1 root root 288771 May 29 15:45 projectA-520.tar.gz
-rw-r--r-- 1 root root 293589 May 29 15:50 projectA-524.tar.gz
-rw-r--r-- 1 root root 301862 May 29 15:55 projectA-529.tar.gz
-rw-r--r-- 1 root root 308573 May 29 16:00 projectA-534.tar.gz
-rw-r--r-- 1 root root 315250 May 29 16:05 projectA-540.tar.gz
-rw-r--r-- 1 root root 318863 May 29 16:10 projectA-544.tar.gz
-rw-r--r-- 1 root root 330825 May 29 16:15 projectA-550.tar.gz
-rw-r--r-- 1 root root 294565 May 29 15:45 projectB-527.tar.gz
-rw-r--r-- 1 root root 303877 May 29 15:50 projectB-532.tar.gz
-rw-r--r-- 1 root root 308243 May 29 15:55 projectB-537.tar.gz
-rw-r--r-- 1 root root 313657 May 29 16:00 projectB-542.tar.gz
-rw-r--r-- 1 root root 323662 May 29 16:05 projectB-548.tar.gz
-rw-r--r-- 1 root root 330473 May 29 16:10 projectB-553.tar.gz
-rw-r--r-- 1 root root 338349 May 29 16:15 projectB-558.tar.gz
svn_backup.shの出力例
Beginning hot backup of '/data/repository/projectB'.
Youngest revision is 1
Backing up repository to '/backup/repository/projectB-1'...
Done.
Archiving backup to '/backup/repository/projectB-1.tar.gz'...
Archive created, removing backup '/backup/repository/projectB-1'...
SVN Backup OK
Beginning hot backup of '/data/repository/projectA'.
Youngest revision is 1
Backing up repository to '/backup/repository/projectA-1'...
Done.
Archiving backup to '/backup/repository/projectA-1.tar.gz'...
Archive created, removing backup '/backup/repository/projectA-1'...
SVN Backup OK
出力ファイル
[root@localhost repository]# ll
total 6336
-rw-r--r-- 1 root root 288771 May 29 15:45 projectA-520.tar.gz
-rw-r--r-- 1 root root 293589 May 29 15:50 projectA-524.tar.gz
-rw-r--r-- 1 root root 301862 May 29 15:55 projectA-529.tar.gz
-rw-r--r-- 1 root root 308573 May 29 16:00 projectA-534.tar.gz
-rw-r--r-- 1 root root 315250 May 29 16:05 projectA-540.tar.gz
-rw-r--r-- 1 root root 318863 May 29 16:10 projectA-544.tar.gz
-rw-r--r-- 1 root root 330825 May 29 16:15 projectA-550.tar.gz
-rw-r--r-- 1 root root 294565 May 29 15:45 projectB-527.tar.gz
-rw-r--r-- 1 root root 303877 May 29 15:50 projectB-532.tar.gz
-rw-r--r-- 1 root root 308243 May 29 15:55 projectB-537.tar.gz
-rw-r--r-- 1 root root 313657 May 29 16:00 projectB-542.tar.gz
-rw-r--r-- 1 root root 323662 May 29 16:05 projectB-548.tar.gz
-rw-r--r-- 1 root root 330473 May 29 16:10 projectB-553.tar.gz
-rw-r--r-- 1 root root 338349 May 29 16:15 projectB-558.tar.gz
Author And Source
この問題について(svn-hot-backupを使ったSubversionリポジトリの複数世代のフルバックアップ検証メモ), 我々は、より多くの情報をここで見つけました https://qiita.com/ntakeda67/items/08a5717f2bbd79d1e708著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .