MySQL、SVN、Tracをバックアップする(2)

運用しているサーバーの/hotcopy/ に保存されているファイル群を圧縮して/backupに保存します。

シェルスクリプトを作成します。

vi /root/backup.sh

下記内容を記述します。※参考URLhttp://centossrv.com/backup.shtml
まだ自分では確認してないので動かない場合は参考URLを見て適時修正してください><

#!/bin/bash

BK_DIR=/backup
BK_LOG=/var/log/backup.log

mkdir -p $BK_DIR

#---------------------------------------------------
# バックアップ保存世代数
# ※当日分を含めた過去分バックアップを保存する世代数
# ※過去分バックアップを保存しない場合は1を指定する
#---------------------------------------------------
BK_GEN=8

#---------------------------------------------------
# 暗号化・復号化パスフレーズ
# ※指定がないときは暗号化しない
#---------------------------------------------------
PASS=''

#---------------------------------------------------
# バックアップログファイル名
#---------------------------------------------------
BK_LOG=/var/log/backup.log

#---------------------------------------------------
# 前回バックアップをリネーム
#---------------------------------------------------
cd $BK_DIR
OLD_BK_FILE=`ls backup.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

#---------------------------------------------------
# バックアップログファイルを新しく作り直す
#---------------------------------------------------
rm -f $BK_LOG
touch $BK_LOG
chmod 400 $BK_LOG

#---------------------------------------------------
# バックアップ実行
#---------------------------------------------------
echo "`date` backup start" >> $BK_LOG

#---------------------------------------------------
# 圧縮
#---------------------------------------------------
# c: create archive
# j: bzip2 で tar.biz2ファイルを作成
# v: verbose 作成・抽出時にファイルのリストを画面出力する
# f: file  元々テープメディアのコマンドなので要指定
# P: パス名を保持
#----------------------------------------------------
tar cjvfP $BACKUPDIR/backup.tar.bz2 -T /hotcopy >> $BK_LOG 2>&1

### エラー検出時
code=$?
if [ $code -ne 0 ]; then
    cat $BK_LOG | mail -s "BACKUP NG CODE IS $code" root
    rm -f $BK_DIR/backup.tar.bz2
    error_exit
fi

#---------------------------------------------------
# バックアップ完了
#---------------------------------------------------
echo "`date` backup end" >> $BK_LOG

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

これをcronに登録しておき、あとはこのディレクトリとWndows側をcwRsyncなどで同期をとればOKです。