ShellScript
MySQL
backup
Linuxコマンド
xrea

xrea mysql/ファイルのシェルスクリプト

XREAでシェルスクリプトをおいてみた。目的はデータのバックアップだったのだが、XREAは無料版だと
cronが設定できないので、変更した時は手動でバックアップしてます。

参考元のだと私の環境だとmysqldumpがうまくいかなかったので、ちょっと改良してます。

1.フォルダの作成
public_html/と同じ場所にフォルダを作成

$ mkdir ~/backup-mysql

2.backup-mysqlに移動して、シェルスクリプト作成
シェルスクリプトはパーミッション700で作成

$ cd ~/backup-mysql
[backup-mysql]$ touch backup.sh
[backup-mysql]$ chmod 700 backup.sh

3.シェルスクリプトを編集
ここからは私の独自の設定です。
メール送信はXREAではできません。
※そもそもmailコマンドがない

backup.sh
#!/bin/sh

# 初期設定(ここを自分に合わせる)
DATABASE=◯◯◯◯
DBUSERNAME=◯◯◯◯
PASSWORD=◯◯◯◯
XREAUSERNAME=◯◯◯◯
PORT=9306
BACKUPDIR=backup-mysql
KEEPDAY=3
MAILADDRESS=◯◯◯◯@◯◯◯◯
PROGRAM=~/public_html/

# XREA/CORESERVER 設定
PREFIX=mysql
SERVER=localhost
NOWDATE=`date +%Y%m%d`
DESTDIR=/virtual/$XREAUSERNAME/$BACKUPDIR
DUMPFILE=$PREFIX.$NOWDATE.sql
TARFILE=$PREFIX.$NOWDATE.tar.gz
TARFILE2=$XREAUSERNAME.$NOWDATE.tar.gz
OLDDATE=`date "-d$KEEPDAY days ago" +%Y%m%d`

# MySQLダンプ/圧縮
cd $DESTDIR
mysqldump -u $DBUSERNAME -P $PORT -B $DATABASE -p$PASSWORD >$DUMPFILE
tar zcvf $TARFILE $DUMPFILE

#ソース保存 *public_html以下の特定フォルダだけの場合は後ろのパスを変える。
tar cvfz $TARFILE2 $PROGRAM --exclude downloads
#downloadsというフォルダを除外。cakephpにコピーした時に増えるので。

# 処理判定
if [ $? != 0 -o ! -e $TARFILE ]; then
    echo "backup faild -- ($DUMPFILE)"
    exit 1
fi

判定処理部分は毎日バックアップしないなら意味なし。

5.起動してみる。
本来はcronだが、XREAの無料版はcron対応していないので、手動で起動。

$ ~/backup-mysql/backup.sh

以上

参考:http://wp.graphact.com/2011/06/27/mysql-sh-backup/