MySQLバックアップデータを無料ウェブメールに自動保存
WordPressで使用しているデータベースはMySQLですが、一応バックアップデータは毎日とっています。
バックアップ方法はWebminで時間指定してとっています。
PHP5とMySQL5をDebian GNU/Linux 4.0 Etchにインストール
しかしながら、先日自宅サーバのハードディスクが壊れたときに今更ながら気がついたのです。
「いくらバックアップをとっておいても、サーバ内にあったままだとハードディスクが壊れたらおしまいじゃん!」
と言うことで、色々とググってみるといくつか方法がありました。
一番多い方法はgzipを使って圧縮しuuencodeを使用し添付ファイルとして送信する方法でした。
自宅サーバにメールサーバがインストールされていることが前提
MySQLバックアップファイル:MySQL.sql
MySQLバックアップファイルのディレクトリ:/home/user
圧縮したファイル:MySQL.gz
送信先:hogehoge@gmail.com(今回はGmailでトライ)
例1)gzip -c /home/user/MySQL.sql > /home/user/MySQL.gz | uuencode /home/user/MySQL.gz MySQL.gz | mail -s ‘MySQL.gz’ hogehoge@gmail.com
この方法でトライしてみたのですが添付ファイルのようにはなっておらずよく解らないメールが送信されました。
また、uuencodeした物はデコードしなければ使えないとのことで、面倒なので他の方法を探しました。
その結果muttと言うプログラムを使うと良いことが分かりました。
debian linux にも用意されているのでインストールされていない場合は入れておきましょう。
例2)gzip -c /home/user/MySQL.sql > /home/user/MySQL.gz | mutt -a /home/user/MySQL.gz -s ‘MySQL.gz’ hogehoge@gmail.com
これでメールの添付ファイルとしてGmail上で見ることが出来たのですが、何かがおかしい?
よく見ると、送信前ファイルとGmail上添付ファイルでファイルサイズが違う!ダウンロードして解凍してみても一見似たようなファイルだがやはりサイズが違う。
よくよく考えて出た答えが、「圧縮している最中に送信しているのでは?」
そこでたぶん “| “が良くないと思いここでウェイトをかけるコマンドを探しましたらありました。”&&”です。これは前の処理が終わってから次の処理に移るコマンドです。そして最終的にできたのが例3)
例3)gzip -c /home/user/MySQL.sql > /home/user/MySQL.gz && mutt -a /home/user/MySQL.gz -s ‘MySQL.gz’ hogehoge@gmail.com
2012/1/2追記
Debian 6.0 "Squeeze" にバージョンアップしたら、このとき入っていたmuttの構文に変更があったようで例3)では送信できなくなってしまいました。
色々といじって例4)で送信できるようになりました。
例4)gzip -c /home/user/MySQL.sql > /home/user/MySQL.gz && mutt –s “MySQL.gz” hogehoge@gmail.com -a /home/user/MySQL.gz
これでしっかりと添付ファイルとして送信でき、ファイルも問題なく自動保存できます。
このコマンドをwebmin→予定済みCron作業→新しいスケジュールのcronジョブを作成でコマンドの中に入れ有効とし、スケジュールを決めれば定期的にウェブメールへ送信されます。\(^-^)/バンザーイ
Leave a Reply