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

とかやるのかな?

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

CORESERVER.JP で MySQL ( DB ) を自動バックアップする方法 – ひとぅブログ
hiromasa.another :o) » Blog Archive » WordPress の MySQL バックアップ
Coreserver でのバックアップ – 治療不可
ArtSoftwareWorks.Net – 31.運用すっか ~バックアップ編~
MySQLバックアップ<Xrea編> – MMRT daily life
MySQL の簡単自動バックアップ | Imai Blog! ( shell も cron も使わない方法。こんな方法もあるのか…。 )

2 COMMENTS

ABCP-weblog

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

Coreserverで、MySQLデータベースを自動でバックアップする方法。
以下のスクリプト(backup.sh)をcronで定期的に実行します。
#!/bin/sh/usr/local/mysql/bin/mysqldump -h localhost -c -u DBユーザ名 –passwor…

コメントを残す

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