ロリポップをPHPとGmailでお手軽バックアップする

4月 19th, 2008 admin Posted in PHP, 今日のコード | コメントは受け付けていません。

ロリポップのファイルをバックアップするために任意のディレクトリをzipで圧縮してメールでGmailに送るスクリプトを書いた。
別にGmailでなくてもいいのだけどGmailなら6Gぐらい容量があるし、ゴミ箱に自動で入るように設定しておけば30日ごとに勝手に消してくれるので非常にお手軽なのです。

コード

メールの送信にphpmailerというのを使っています

PHP:
  1. <?php
  2.  
  3. //ライブラリ読み込み
  4. require("./PHPMailer/class.phpmailer.php");
  5.  
  6. //バックアップするディレクトリを指定
  7. $backup_dir = "../photo"; //この場合はphotoディレクトリ以下をバックアップ
  8. //ファイル名を指定
  9. $new_file = "domain.com.zip";
  10.  
  11. //送り先
  12. $to = "任意のメールアドレス@gmail.com";
  13. $subject = "domain.com backup";
  14. $body = "";
  15. $from = "任意のメールアドレス@gmail.com";
  16. $fromname = "domain.com";
  17. $attachfile = "./domain.com.zip";
  18.  
  19.  
  20. mb_language("japanese");
  21.  
  22. system("zip -r $new_file $backup_dir");
  23.  
  24.  
  25.  
  26. $mail = new PHPMailer();
  27. $mail->CharSet = "iso-2022-jp";
  28. $mail->Encoding = "7bit";
  29.  
  30. $mail->AddAddress($to);
  31. $mail->From = $from;
  32. $mail->FromName = mb_encode_mimeheader(mb_convert_encoding($fromname,"JIS","EUC-JP"));
  33. $mail->Subject = mb_encode_mimeheader(mb_convert_encoding($subject,"JIS","EUC-JP"));
  34. $mail->Body  = mb_convert_encoding($subject,"JIS","EUC-JP");
  35.  
  36.  
  37. $mail->AddAttachment($attachfile);
  38.  
  39. if (!$mail->Send()){
  40.     echo("メールが送信できませんでした。エラー:".$mail->ErrorInfo);
  41. }
  42.  
  43. unlink($new_file);
  44. ?>

まとめ

  • ロリポップは安いのにsystem関数使えて凄い、PHPのzip用のライブラリも入ってます
  • rmコマンドは使わせてもらえないらしい、unlink関数でファイルは消す
  • 現在Zipで送ってるだけなのでセキュリティ的にアウト、暗号化するのが望ましい
  • 定期的に実行するためにwebcronのようなサイトを使う(もしくは他サーバから、もしくは1日の最初の訪問者とかに踏ませる)
  • Gmailのほうでここからのメールはゴミ箱に直行の設定をしよう
  • Gmailで転送設定しておけば簡単に二重化ができる!
  • Gmailの規約は要確認

参考サイト

phpmailer
http://phpmailer.codeworxtech.com/
PHPで日本語メールを送る - 応用編 (添付ファイル、HTMLメール) - EC studio 技術ブログ
http://techblog.ecstudio.jp/tech-tips/mail-japanese-advance.html

Comments are closed.