wa - NucleusやFlashなどなど

RSS

Home > Nucleus 自動バックアッププラグインNP_znBackup

11.16 '05

Nucleus 自動バックアッププラグインNP_znBackup

znBackup 自動的に、設定した周期で、設定した場所に、データベースのバックアップファイルを作成し、添付ファイルとしてメールで送信します。Nucleus CMS v3.*のバックアップ不具合を検知する機能もついています。

ver0.02alphaは、旧バージョンです。

解説

使い方
スキンの好きなところに
<%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)と実際とで不一致がないかお確かめ下さい。
  • ver0.02から以下のメッセージを追加しました。
    • 警告!!以下のプラグインテーブルにMySQLの予約語が使用されているため、正しくリストアできない可能性があります。
    • アイテム「****」にコメントが追加されましたが、行頭に#が付いていますので、正しくリストアできない可能性があります。
      行頭に#を使用したコメントが追加された場合のみメールで通知します。
    • アイテム「****」http:**** 行頭に#が付いている箇所がありますので、正しくリストアできない可能性があります。
      行頭に#を使用したアイテムが追加・編集された場合のみメールで通知します。
  • プラグインから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のバックアップとの差異の検証を行う場合、以下の手順でバックアップをとる必要があります。
    1. Admin DB保存/復元ページを開き、「バックアップを作成する」ボタンを押すだけの状態でスタンバイしておく。
    2. 別ウィンドウで、もうひとつAdminを開いておき、プラグインがすぐバックアップを実行するようにプラグインオプションのバックアップ時刻を過去に設定する。
    3. すぐさま、ブログのページを開き、バックアップを実行させる。・・・A
    4. すぐさま、最初のスタンバイしていたページの、「バックアップを作成する」ボタンを押す。・・・B
    AとBとの間に、データベースが更新されると差異が発生しますので、アクセスの多い時間帯での検証は難しいかもしれません。
注意点
安心のためのバックアップですので、ご使用の環境で、このプラグインが出力するバックアップファイルと、Nucleus Adminのバックアップから出力するファイルに差異がないことを十分ご確認下さい。
ただし、Nucleus Adminのバックアップ自体に、ちょっと問題があるようです。実は、このプラグインを作っている最中に2点ほど見つけてしまいました。これについては、できるだけ早く記事にまとめたいと思います。→{{270}}
ということで、テスト時には合わせて、phpMyAdminなどでもバックアップをとることを、強くお勧めします。リストアは慎重に。
まだまだ実験段階ですので、alpha版として公開したいと思います。
Nucleus Adminのバックアップファイルと、比較検証していただけるとありがたいです。(比較の際には、上記の比較方法を参考にしてください。)
環境の違いによる不具合などがございましたら、ご連絡いただければと思います。
「動いたよ」だけでもコメントいただけるとうれしいです。

ダウンロード

ダウンロードできるファイルはありません。

変更点

  • バックアップの指定時刻から1時間以内にアクセスがない場合、指定時刻がずれる問題を修正
  • MySQL(4.1)の予約語をフィールド名・キー名に使用しているプラグインがある場合、検知しテーブル名を、メールメッセージに追加します。(NP_znBackupのバックアップ処理内で、チェックします。)
  • アイテム・コメント内で、行頭に#が使われている場合、メールで通知します。(こちらは、アイテム追加・編集、コメント追加時に、チェックします。ですので、このプラグインを導入する前のデータについてはチェックできません。バックアップ処理内でこのチェックを行うと、結構な負担になると思われる為です。)

ダウンロードファイルの、” _Nv ” 以降の数字が、対応しているNucleusのバージョンです。:arwbottom:

バージョン経歴


VerUpdateDownload
最新
1.00
  • このver1.00から、Nucleusのバージョンに依存しないようになりました。Nucleusのバージョンが変わるたびに、専用版を入れる必要がなくなりました。
download1.00.zip[778clicks]
0.092
  • パーミッション設定不備などにより、サーバ上にファイルを保存できなかった場合、メールでメッセージを送信
  • プラグインの最新バージョンチェック機能
  • プラグインオプションが追加されていますが、プラグインの再インストールは不要です。配布ファイルの上書きでOKです。
download0.092_Nv323.zip[341clicks]
0.091
  • 分かりやすいように、ファイル名にブログ名を入れました。
  • zlib非対応サーバーでも使用できるように、非圧縮バックアップが可能になりました。
  • backup.phpを、includeせずに、クラスメソッドとして取り込みました。
  • 分かり難いメッセージを、一部変更
  • プラグインテーブルチェック機能(getTableList&MySQL予約語のチェック)をオフにできるようにしました。
download0.091_Nv322.zip[230clicks]
download0.091_Nv321.zip[213clicks]
0.07
  • 言語ファイル対応(文字コードに依存しない構造になりました。)
  • Nucleusのバージョンと合わない時の警告に、Nucleusのバージョンと、このプラグインで対応しているバージョンを表示
0.06
  • スキンに書かなくてもOKになりました。(インストールして、プラグインオプションを設定するだけです。)
  • 通知メールに、デフォルトのブログ名を記載するようにしました。
  • バックアップの間隔を24H以内に設定していると、日付が変わるまでバックアップをとり続けるバグを修正(プラグインオプションの「前回のバックアップ"設定"時刻」を、「次回のバックアップ時刻」に変更しました。)
0.05alpha
  • アイテム追加・変更時、コメント追加時の、「不具合データ検知機能」を、On/Offできるようにしました。
  • 「前回のバックアップ"設定"時刻」のデフォルトを、'2050-01-01 02:00:00'にしました。(デフォルトで発動するのを防止するため)
0.04alpha
  • Win系サーバー対策
  • 過去のアイテム・コメントの行頭#データ検知機能
0.02alpha
  • バックアップの指定時刻から1時間以内にアクセスがない場合、指定時刻がずれる問題を修正
  • MySQL(4.1)の予約語をフィールド名・キー名に使用しているプラグインがある場合、検知しテーブル名を、メールメッセージに追加します。(NP_znBackupのバックアップ処理内で、チェックします。)
  • アイテム・コメント内で、行頭に#が使われている場合、メールで通知します。(こちらは、アイテム追加・編集、コメント追加時に、チェックします。ですので、このプラグインを導入する前のデータについてはチェックできません。バックアップ処理内でこのチェックを行うと、結構な負担になると思われる為です。)
0.01alpha
  • 初期バージョン
:!!::arwtop:verをクリックすると、各verの解説に切り替わります。

プラグインのバージョンアップ情報をRSSで配信しています。バグ情報などもお届けいたしますので、拙作プラグインをお使いの際には、是非RSSリーダーにご登録ください。:!!:佐藤(な)作成・改造のプラグインバージョンアップ情報RSS

コメント

この記事へのコメントはありません。

コメント追加

このアイテムは閉鎖されました。このアイテムへのコメントの追加、投票はできません。

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

トラックバック

トラックバック
このエントリにトラックバックはありません
このトラックバックURLを使ってこの記事にトラックバックを送ることができます。 もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。.
トラックバックURL:
PluginGenerator znBackup znItemFieldEX znCustomAdmin znBackup znSmiley znShowDraft yuiCalendar znSpeedCubing znKeywordLink znCommentRSS znCCitation znItemParts znMCList znHatenaExist znQuestionnaire znFlash