さくらインターネットでWordPressサイトをバックアップ

最近のレンタルサーバは、「システム障害でデータが全部飛んじゃいました!テヘッ」ということも少ないだろうと思うので、サイトのバックアップをレンタルサーバ側に全面的に依存することにしました。
久しぶりにcronをいじったので、メモとして投稿。

viが使えるなら

Linuxのコマンドがひと通り使える人にとっては、さくらインターネットはホント、ストレスなく使えてありがたい環境です。
で、crontabも使えるかなー、と思ったらあっさり使えました。
% crontab -e
でクロンタブを起動して、あとはviと同じ要領で編集します。

{USER} = さくらインターネットのユーザーID
{DBUSER} = データベースのユーザーID(スタンダードコースだと、{USER}と同じ)
{DBNAME} = データベースの名前(スタンダードコースだと、{USER}と同じ)
{DBPASSWORD} = データベースのパスワード
{DBSERVER} = データベースのサーバー名(xxxxxx.db.sakura.ne.jp など)
で、置き換えます。

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
0 4 * * * mysqldump -u{DBUSER} -p{DBPASSWORD} -h{DBSERVER} {DBNAME} > /home/{USER}/backup/dump-`/bin/date +\%Y\%m\%d`.sql
0 2 * * 0 cd /home/{USER}/; tar -zcf /home/{USER}/backup/www-`/bin/date +\%Y\%m\%d`.tar.gz www
0 3 * * 0 find /home/{USER}/backup -name "www-*" -mtime +30 -exec rm {} \; > /dev/null
0 20 * * * find /home/{USER}/backup -name "dump-*" -mtime +30 -exec rm {} \; > /dev/null

:wqで保存したら、
% mkdir ~/backupで、バックアップ用のディレクトリを作っておきます。

1行目 : cron実行時には環境変数がリセットされるので、パスを設定しておきます。
2,3行目 : DBのダンプは毎朝4時、wwwディレクトリの圧縮ファイルは土曜深夜2時に作成します。
保存するファイル名を「dump-20120315.sql」のようにしたいので、dateコマンドで日付をとります。ただし、「`」でくくった中身はパスが効かないので、dateコマンドはフルパスで指定します。また、cronでは「%」がメタ文字として使用されているので、「\」でエスケープしてやります。
4,5行目 : 30日以上経過したバックアップを自動で削除します。古いファイルが存在しないと、ポストマスターにメールが飛んでしまうので、実行結果は/dev/nullに捨てます。

コントロールパネルから設定

コマンドラインを使わずに、web上のコントロールパネルから、「CRONの設定」で自動バックアップを設定することもできます。
準備として、FTPソフトなどでユーザーのホームディレクトリ(wwwではなくて)にbackupディレクトリを作っておいてください。

あとは、コントロールパネルの「CRONの設定」を開いて、「新規項目の追加」で上記のcrontabの設定のコマンドの部分と実行時刻を分けて入力してやるだけですが、mysqldumpコマンドはフルパスで指定してやらないと、登録時のチェック機能ではじかれるようです。そこで、
mysqldump -u{DBUSER} -p{DBPASSWORD} -h{DBSERVER} {DBNAME} > /home/{USER}/backup/dump-`/bin/date +\%Y\%m\%d`.sql
の部分は、
/usr/local/bin/mysqldump -u{DBUSER} -p{DBPASSWORD} -h{DBSERVER} {DBNAME} > /home/{USER}/backup/dump-`/bin/date +\%Y\%m\%d`.sql
とします。
あとは、環境変数のところに
環境変数 : PATH
環境変数の値 : /bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
と足しておけばOKです。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です