perl + shell + cron で MySQL のデータを Gmail に定期バックアップ

WordPress のバックアッププラグイン ( WP-DB-Backup ) がうまく動かないので、cron を使って MySQL のデータを Gmail に定期バックアップする方法を調べてみました。 この方法だと WordPress に限らず他の CMS でも使えそう。

OTCHY.NET » MySQL のダンプを Gmail でお手軽に定期バックアップ と言うページで紹介されていたスクリプトを使わせて頂きました。 ありがとうございます。

CORESERVER での設置例

私の使っている CORESERVER での設置例を書いておきます。

  • 今回編集したファイルは EUC + LF で保存しました。
  • cron に登録するファイルはフルパスで書くみたいです。
  • 下のコードの [ **** ] の部分には、CORESERVER のアカウント名が入ります。

backup.pl ( 上記ページで公開されていたスクリプト )

パスなどの設定は、次のようにしました。

require "/virtual/****/mimew.pl";
## Setting
$sendmail  = '/usr/sbin/sendmail';
$tmp       = '/tmp';
$mysqldump = '/usr/local/mysql/bin/mysqldump';
$zip       = '/usr/local/bin/zip';

参考 : 各種パス ( PATH ) について – CORESERVER.JP : コアサーバー

backup.sh

他のデータベースも同時にバックアップしたいので、次のようなシェルスクリプトにしてみました。 原因はわかりませんが、文字コードは Shift-JIS じゃないと動きませんでした。

#!/bin/sh
/usr/local/bin/perl /virtual/****/backup.pl
exit

この段階で、次のコマンドを入力し正常に動くかどうかテストしておきます。

chmod +x backup.sh
./backup.sh

参考 : シェル・スクリプトの実行

cron に登録

CORESERVER の場合、管理ページから登録しないといけないみたいなので、そのように登録。

/virtual/****/backup.sh
  • 共用サーバの場合、0:00 みたいな時間指定は止めて、中途半端な時間にしておくのが良いみたい ( 処理が集中するから? )
  • CORESERVER.JP で cron を設定できる最短周期は1時間毎
  • CORESERVER.JP では、三分以内で処理を終わらせないと強制終了するみたい

その他

  • メールに添付されたファイルの中身を確認してみた所、正常にダンプできているみたい。
  • 共用レンタルサーバなので /tmp にテンポラリファイルが残らないか心配だったんだが、スクリプトで削除 ( unlink ) しているみたい。

似たような処理のスクリプトを見つけたんだが…

似たような処理をする mysqldump2email と言う物を見つけたんだが、使い方がワカラン。 パスを通さないといけないのかな?

$ ./mysqldump2email

とかやるのかな?

その他の参考になりそうなページ

2 Comments

ABCP-weblog

CoreserverでMySQLのデータを自動的にバックアップする方法

Coreserverで、MySQLデータベースを自動でバックアップする方法。 以下のスクリプト(backup.sh)をcronで定期的に実行します。

!/bin/sh/usr/local/mysql/bin/mysqldump -h localhost -c -u DBユーザ名 –passwor…

コメントを残す

メールアドレスが公開されることはありません。