さくらのレンタルサーバで直近1週間分だけmysqlのバックアップを取っておく

  • さくらインターネットのレンタルサーバを使っている。
  • 毎日mysqlのバックアップを自動的に取りたい。
  • 一週間分だけ取っておきたい(一週間以上前のバックアップは消えてほしい)。

と、聞かれたので、書いておく。

  • mysqldumpでダンプする。
  • bzip2で圧縮する。
  • dateで取得した曜日をファイル名に含めて毎日上書きする。

という方針でいく。

まずは、ディレクトリを作る。コントロールパネルでもいいし、sshで入って

mkdir backup
mkdir bin

とやってもいい。とにかく、ホームディレクトリに、backupとbinディレクトリを作る。

mysqldumpを実行するシェルスクリプトを書く(cshはよくわからないので、bash)。わからなくなっちゃうから、全部フルパスで書いておく。
ファイル名は「/home/ユーザ名/bin/mysql-backup.sh」とする。

#!/usr/local/bin/bash
DBHOSTNAME=mysqlXXX.db.sakura.ne.jp
DBUSERNAME=ユーザ名
DBPASSWORD=パスワード
DBNAME=データベース名
DAY=`date "+%w"`
BACKUPFILENAME=/home/ユーザ名/backup/mysql.dmp.$DAY.bz2

/usr/local/bin/mysqldump -h $DBHOSTNAME -p$DBPASSWORD -u $DBUSERNAME $DBNAME |/usr/bin/bzip2 >$BACKUPFILENAME

※ mysqlXXX.db.sakura.ne.jpのXXXの部分、ユーザ名、パスワード、データベース名を自分の契約しているレンタルサーバの情報にあわせて変更する。

あとは、

/home/ユーザ名/bin/mysql-backup.sh 1>/dev/null

という感じでサーバコントロールパネルの「CRONの設定」を使って書いておく(crontab -eで編集しても同じ)。
DAYの値は0が日曜日で順に土曜日が6。
毎日先週の同じ曜日のバックアップファイルが上書きされるので、常に1週間分のこっていることになる。