Home > Debian | UNIX > [Debian]Debian lennyで1からサーバーを作ってみる – サーバーバックアップ設定

[Debian]Debian lennyで1からサーバーを作ってみる – サーバーバックアップ設定

サーバーバックアップ設定

  • bzip2をインストール
    # aptitude install bzip2
  • バックアップスクリプト作成
    # vi backup.sh
    #!/bin/bash
    
    #
    # ローカル内でバックアップ
    #
    
    LANG=C
    
    #
    # 設定開始
    #
    
    # バックアップ対象リスト名
    # ※バックアップ対象をフルパスで記述したリスト
    BACKUPLIST=/root/backuplist
    [ ! -s $BACKUPLIST ] && echo "$BACKUPLIST is not found" && error_exit
    
    # バックアップ対象外リスト名
    # ※バックアップ対象外をフルパスで記述したリスト
    BACKUPNOLIST=/root/backupnolist
    
    # バックアップ先ディレクトリ名
    BACKUPDIR=/backup
    mkdir -p $BACKUPDIR
    
    # バックアップ保存世代数
    # ※当日分を含めた過去分バックアップを保存する世代数
    # ※過去分バックアップを保存しない場合は1を指定する
    BACKUPGEN=8
    
    # 暗号化・復号化パスフレーズ
    # ※指定がないときは暗号化しない
    PASS=''
    
    # バックアップログファイル名
    BACKUPLOG=/var/log/backup.log
    
    #
    # 設定終了
    #
    
    # 異常終了処理関数定義
    error_exit () {
        rm -f $TMPBACKUPNOLIST
        exit 1
    }
    
    # バックアップファイルをバックアップ対象外リストに追加
    # ※バックアップ先ファイルをバックアップしないようにする
    TMPBACKUPNOLIST=`mktemp`
    [ -s $BACKUPNOLIST ] && cat $BACKUPNOLIST > $TMPBACKUPNOLIST
    echo "$BACKUPDIR/*backup.tar.bz2" >> $TMPBACKUPNOLIST
    
    # 前回バックアップをリネーム
    cd $BACKUPDIR
    OLDBACKUPFILE=`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 $BACKUPLOG
    touch $BACKUPLOG
    chmod 400 $BACKUPLOG
    
    # バックアップ実行
    echo "`date` backup start" >> $BACKUPLOG
    tar cjvfP $BACKUPDIR/backup.tar.bz2 -T $BACKUPLIST -X $TMPBACKUPNOLIST >> $BACKUPLOG 2>&1
    code=$?
    if [ $code -ne 0 ]; then
        cat $BACKUPLOG | mail -s "BACKUP NG CODE IS $code" root
        rm -f $BACKUPDIR/backup.tar.bz2
        error_exit
    fi
    echo "`date` backup end" >> $BACKUPLOG
    
    # バックアップ暗号化(暗号化・復号化パスフレーズ指定時のみ)
    if [ ! -z $PASS ]; then
        echo "`date` encrypt start" >> $BACKUPLOG
        mkdir -p $HOME/.gnupg
        echo $PASS|gpg --passphrase-fd 0 --batch -c $BACKUPDIR/backup.tar.bz2 > /dev/null 2>&1
    	code=$?
    	if [ $code -ne 0 ]; then
    	    cat $BACKUPLOG | mail -s "BACKUP NG CODE IS $code" root
    	    rm -f $BACKUPDIR/backup.tar.bz2*
    	    error_exit
    	fi
        rm -f $BACKUPDIR/backup.tar.bz2
        echo "`date` encrypt end" >> $BACKUPLOG
    fi
    
    # バックアップ保存世代を超えた古いバックアップを削除
    if [ $(ls $BACKUPDIR/*backup.tar.bz2*|wc -l) -gt $BACKUPGEN ]; then
        OLDBACKUPCNT=`expr $(ls $BACKUPDIR/*backup.tar.bz2*|wc -l) - $BACKUPGEN`
        for file in `ls -t $BACKUPDIR/*backup.tar.bz2*|tail -n $OLDBACKUPCNT`
        do
            rm -f $file
        done
    fi
    
    # バックアップ対象外リスト削除
    rm -f $TMPBACKUPNOLIST
    
  • 実行権を付与
    # chmod 700 backup.sh
  • バックアップ対象リスト作成
    # echo "/home" >> backuplist
    # echo "/root" >> backuplist
    # echo "/var/www" >> backuplist
    # echo "/backup/mysql" >> backuplist
    # echo "/var/lib/postgresql/8.3/main/backups/pgsql-backup" >> backuplist
    
  • バックアップ対象外リスト作成
    # echo "/var/www/admin" >> backupnolist
  • cronへ登録(mysqlのバックアップ後、サーバーバックアップを行う様に編集。)
    # crontab -e
    0 5 * * * /root/mysql-backup.sh; /root/backup.sh
    

Comments:0

add to hatena hatena.comment (0) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://ore.saizensen.net/archives/371/trackback
Listed below are links to weblogs that reference
[Debian]Debian lennyで1からサーバーを作ってみる – サーバーバックアップ設定 from おれ最前線ねっと

Home > Debian | UNIX > [Debian]Debian lennyで1からサーバーを作ってみる – サーバーバックアップ設定

Search
Feeds
Meta

Return to page top