
自動的に、設定した周期で、設定した場所に、データベースのバックアップファイルを作成し、添付ファイルとしてメールで送信します。Nucleus CMS v3.*のバックアップ不具合を検知する機能もついています。
ver0.01alphaは、旧バージョンです。解説
使い方
スキンの好きなところに
<%znBackup%>
と書くだけです。
プラグインオプション
- 前回のバックアップ"設定"時刻(分秒は無効)
実際に前回バックアップした時刻ではなく、"設定"時刻となります。時間単位ですので、分:秒は、00:00となります。
- 何時間おきにバックアップしますか?
前回のバックアップ"設定"時刻から、設定した時間を過ぎて最初のアクセス時にバックアップをとります。
前回のバックアップ"設定"時刻と合わせて編集することで、次のバックアップ時刻を指定することができます。
デフォルトは、24時間です。
- 保存するディレクトリ名
サーバー上のディレクトリ名(パス)を指定してください。
ネット上のURLではなくて、FTPソフトでアップ先に指定できる最初の場所からの絶対指定で、最後に/が必要です。(説明がへたですね。)レンタルサーバーで、割り当てられた最初のディレクトリを基点とした、絶対指定です。
例えば、/home/sato/nucleus_bak/
ブラウザからアクセスできる場所じゃない方が良いと思います。(ブラウザからアクセスできる場所に置く場合、アクセス制限などをかけて下さい。)
専用のディレクトリを用意してください。設定量を超えると、古いファイルから削除されますので、削除されては困る他のファイルを置かないでください。
存在しないディレクトリ名を指定すると、ブラウザにエラーが発生しますので注意してください。
- 保存ディレクトリの合計容量が指定量を超えた場合、古いファイルを削除します(MB単位)
1つのバックアップファイルで、この設定値を超える場合、バックアップファイルを作成した直後に削除してしまいますので、バックアップファイルの数倍程度(以上)に設定しておくと良いと思います。デフォルトは10MBです。
- メッセージ及び、圧縮ファイルを送信するメールアドレス(空白の場合、送信せず)
現在の仕様では、処理メッセージ(下記仕様参照)はメールにのみ出力されますので、メールアドレスを設定しておかないと、処理メッセージを確認することができません。
- 圧縮ファイルを、メールに添付しますか?
「いいえ」に設定すると、圧縮ファイルは添付されず、処理メッセージだけが送信されます。
仕様
- zlib圧縮関数が使用できる環境であること。Nucleus Adminで圧縮バックアップができる環境であれば問題ないと思います。
- 保存ディレクトリには、バックアップファイル以外を置かないこと(設定量を超えると削除されます。)
- バックアップファイル1つで保存ディレクトリの設定サイズを超える場合、バックアップしたと同時に削除されます。
- 設定した時刻を過ぎ、最初のアクセス時にバックアップ処理を実行します。
- メールに入るメッセージは以下の通りです。
- 正常にバックアップできていると思いますが、確認をお願いします。
- バックアップファイルは、メールに添付しない設定になっています。
- バックアップファイル1つで設定サイズを超えたため、保存ディレクトリは空になっています。
- nucleus_db_backup_********.sql.gz(古いファイル)を削除しました。
- nucleus_db_backup_********.sql.gz(古いファイル)を削除しようと試みましたが、削除できませんでした。
- 警告!!Nucleusのバージョンが異なるため、バックアップを実行しませんでした。対応バージョンを確認して下さい。
- 警告!!以下のプラグインテーブル宣言(getTableList)と実際とで不一致がないかお確かめ下さい。
- プラグインからNucleus全体のバックアップをとりますので、Nucleusの特定バージョン限定のプラグインとなります。
【詳細】
バックアップ処理は、Nucleusのbackup.phpを呼び出して使用していますが、「バックアップすべきテーブルのリスト」は、外部から再利用できない構造(Adminからのバックアップ実行時にのみ定義している)となっています。このため、プラグイン内に「バックアップすべきテーブルのリスト」を定義する必要があり、特定バージョン用のプラグインとなってしまうのです。
- Nucleus Adminからの.sqlファイルと、このプラグインで出力した.sqlファイルを、テキストファイルの差異を比較するソフトで、内容に差異が無いことを確認しました。
sqlファイル内の冒頭には、タイムスタンプが付加されています。比較検証する時だけ、一旦この一行だけを出力しないように、
backup.phpと、NP_znBackup.phpの
echo "# backup-date: " . gmdate("d-m-Y H:i:s", time()) . " GMT
";
部分をコメントアウトして実行し、それぞれが出力した圧縮ファイルを解凍した、.sqlファイルを比較しました。
↑行単位で差異を検出してくれる比較ソフトを使う場合は、タイムスタンプが出力されていても問題ないかと思います。
[2005-11-18追記]
このNP_znBackupがバックアップ処理を行う直前に、プラグインオプションを更新しますので、Adminのバックアップとの差異の検証を行う場合、以下の手順でバックアップをとる必要があります。
- Admin DB保存/復元ページを開き、「バックアップを作成する」ボタンを押すだけの状態でスタンバイしておく。
- 別ウィンドウで、もうひとつAdminを開いておき、プラグインがすぐバックアップを実行するようにプラグインオプションのバックアップ時刻を過去に設定する。
- すぐさま、ブログのページを開き、バックアップを実行させる。・・・A
- すぐさま、最初のスタンバイしていたページの、「バックアップを作成する」ボタンを押す。・・・B
AとBとの間に、データベースが更新されると差異が発生しますので、アクセスの多い時間帯での検証は難しいかもしれません。
注意点
安心のためのバックアップですので、ご使用の環境で、このプラグインが出力するバックアップファイルと、Nucleus Adminのバックアップから出力するファイルに差異がないことを十分ご確認下さい。
ただし、Nucleus Adminのバックアップ自体に、ちょっと問題があるようです。実は、このプラグインを作っている最中に2点ほど見つけてしまいました。これについては、できるだけ早く記事にまとめたいと思います。→{{270}}
ということで、テスト時には合わせて、phpMyAdminなどでもバックアップをとることを、強くお勧めします。リストアは慎重に。
まだまだ実験段階ですので、alpha版として公開したいと思います。
Nucleus Adminのバックアップファイルと、比較検証していただけるとありがたいです。(比較の際には、上記の比較方法を参考にしてください。)
環境の違いによる不具合などがございましたら、ご連絡いただければと思います。
「動いたよ」だけでもコメントいただけるとうれしいです。
ダウンロード
ダウンロードできるファイルはありません。
変更点
ダウンロードファイルの、” _Nv ” 以降の数字が、対応しているNucleusのバージョンです。

バージョン経歴
↑このフィードをRSSリーダーに登録しておくと、この記事へのコメント追加をチェックすることができます。
コメント追加後の、返事待ちなどにお使い下さい。
なお、コメントチェックの必要がなくなった際には、このRSSを削除して下さいね。
不要なトラフィックを避けるために、ご協力お願いいたします。