勉強したことのメモ

webプログラマが勉強したことのメモ。

PukiWikiでバックアップのスケジュール化

   

PukiWikiでバックアップを取りたかった。調べたらディレクトリごと保存すればいいみたいだけど手動で対応するのは面倒くさい。自動で週に1回ディレクトリをzip化したものをメールで送ってほしかった。以下に対応方法をメモ。

 

バックアップ用のプログラムを作成

以下を記述したファイルを適当なディレクトリにアップロードする。今回は「/var/www/html/hoge/cron.php」と想定する。

<?php
#制限時間なし
set_time_limit(0);

#zipファイル名
$zip_name = "backup.zip";

#zipファイルを保存するディレクトリ
$save_dir = "/var/www/html/hoge";

#圧縮したいディレクトリ
$zip_dir = "/var/www/html/fuga";

#コマンドの実行
$command = "zip -r " . $save_dir . $zip_name . " " . $zip_dir;
shell_exec($command);


#エンコード設定
mb_language("ja");
mb_internal_encoding("UTF-8");

#メアドとタイトル、本文設定
$to = "hoge@gmail.com";
$from = "fuga@gmail.com";
$subject = "送信タイトル";
$text = "送信本文";

#ヘッダー設定
$header = "Content-Type: multipart/mixed;boundary=\"__BOUNDARY__\"\n";
$header .= "Return-Path: " . $to . " \n";
$header .= "From: " . $from ." \n";
$header .= "Sender: " . $from ." \n";
$header .= "Reply-To: " . $to . " \n";

#本文設定
$body = "--__BOUNDARY__\n";
$body .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n\n";
$body .= $text . "\n";
$body .= "--__BOUNDARY__\n";

#添付ファイル設定
$body .= "Content-Type: application/octet-stream; name=\"{$zip_name}\"\n";
$body .= "Content-Disposition: attachment; filename=\"{$zip_name}\"\n";
$body .= "Content-Transfer-Encoding: base64\n";
$body .= "\n";
$body .= chunk_split(base64_encode(file_get_contents($save_dir . $zip_name)));
$body .= "--__BOUNDARY__\n";

#送信
mb_send_mail($to, $subject, $body, $header);


#作成したファイルの削除
unlink($save_dir . $zip_name);

zipファイル等の設定と送受信メアドあたりは適宜変更する。

 

Cronで自動実行させる

vi /etc/crontab

#毎週月曜日の03:00に実行
0 3 * * 1  root /usr/bin/php /var/www/html/hoge/cron.php

 - PHP

  関連記事

フォーム用テンプレPHP

<?php ini_set( 'display_errors', 0 ); ...

PHPでサイトURLからtitleとRSS用URLを取得

サイトのURLからRSS用URLとサイトタイトルを自動で取得したかった。その方法 ...

PHPで配列かどうかを調べる

配列か否かを調べたいケースがあり、確認すると ばっちりそのままの関数発見。 is ...

imgタグで作成したグラフをjQueryでリアルタイムに動かす

このグラフをリアルタイムプレビューさせる。 ■サンプル http://sampl ...

フォームデータを一気に取得

<? error_reporting(E_ALL & ~E_NOT ...

さくらvpsでPHPのエラーログ設定

PHPのエラーログを設定した際のメモ。 vi /etc/php.ini で設定フ ...

PHPでコマンドを実行して画像を加工

PHPで画像をリサイズしたりサムネイルを作ろうとすると、 ソースが長くなって面倒 ...

PHPでPOST送信する際に多次元配列も送る

PHPでPOST送信する際に多次元配列も送りたかった。ただ普通に送ろうとするとO ...

Warning: Division by zero in

PHPでグラフ作ってる時に出たエラー 「Warning: Division by ...

PHPでアクセスIPからランダム英数字のIDを作成

PHPで掲示板などにあるようなアクセスIPからランダム英数字のIDを作成したかっ ...