- さくらインターネットのレンタルサーバを使っている。
- 毎日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週間分のこっていることになる。