Subversionの自動バックアップ

[メモ]Subversionの自動バックアップ

CentOs ver.5.3
subversion ver. 1.4.2

[前提条件]
※hot-backup.py を使う
pythonがインストールされている

①バックアップバージョンの個数を調整
# vi hot-backup.py

----
# ここでバックアップするバージョンの個数を指定(デフォルトは、64)
# Number of backups to keep around (0 for "keep them all")
#num_backups = 64 <- コメントアウト
num_backups = 32
----

②バックアップスクリプト作成
# vi svn-backup.sh

---------------
#! /bin/sh
REPOS=/var/lib/svn/dev
BACKUPDIR=/home/backup/subversion
DUMPDIRNAME=dump
HOTBACKUP=/usr/share/doc/subversion-1.4.2/tools/backup/hot-backup.py
ARCHIVETYPE=bz2
# バックアップ保存世代数
# ※当日分を含めた過去分バックアップを保存する世代数
# ※過去分バックアップを保存しない場合は1を指定する
BACKUPGEN=7

# 前回バックアップをリネーム
cd $BACKUPDIR
OLDBACKUPFILE=`ls dev-*.tar.bz2* 2>/dev/null`
if [ -f $OLDBACKUPFILE ]; then
TIMESTAMP=`ls --full-time $OLDBACKUPFILE|awk '{print $6}'|tr -d -`
mv $BACKUPDIR/$OLDBACKUPFILE $BACKUPDIR/${TIMESTAMP}$OLDBACKUPFILE > /dev/null 2>&1
fi

${HOTBACKUP} --archive-type=${ARCHIVETYPE} ${REPOS} ${BACKUPDIR}

# バックアップ保存世代を超えた古いバックアップを削除
if [ $(ls $BACKUPDIR/*dev-*.tar.bz2*|wc -l) -gt $BACKUPGEN ]; then
OLDBACKUPCNT=`expr $(ls $BACKUPDIR/*dev-*.tar.bz2*|wc -l) - $BACKUPGEN`
for file in `ls -t $BACKUPDIR/*dev-*.tar.bz2*|tail -n $OLDBACKUPCNT`
do
rm -f $file
done
fi
------------------

③権限を変更
# chmod 700 svn-backup.sh


④定期実行
echo "0 4 * * * root /home/backup/svn-backup.sh" > /etc/cron.d/svn-backup
※毎日4:00にバックアップを実行する