[PLUGIN] dumpプラグイン (バックアップ&リストア機能) の作成

  • ページ: BugTrack
  • 投稿者: henoheno
  • 優先順位: タイムリー
  • 状態: 着手
  • カテゴリー: 本体新機能
  • 投稿日: 2004-09-26 (日) 19:44:01
  • バージョン:


メッセージ

teananさん作成のバックアップ/リストアプラグイン(official:自作プラグイン/tarfile.inc.php)を PukiWiki に追加します。このプラグインはネットワーク越しにPukiWikiのバックアップ(*.tar/*.tar.gz)とリストアを可能にします。GPLとして配布はOKとの事です。ありがとうございます。これで助かる人は結構多いでしょう。

  • 特徴:
    • リモートバックアップを可能にする
      • phpファイル単独で動作する (tarやgzipやzipのようなシステムコマンドを呼んでいないし、その設定も不要)
    • リモートリストアまで実現している (PHPのファイルアップロード制限の影響は受ける)
    • エンコードされている生のページ名を、ディレクトリ階層つきのファイル名にデコードする機能(オプション)がある

ちょっと確認: tar の構造


ちょっと確認: Zlibモジュール

  • backupプラグインは以下の様にして zlib モジュールおよび関連関数の有無を判定している
       if (function_exists('gzfile'))
    ※1.4.4のCVS版では以下に改めた
       if (extension_loaded('zlib'))

ちょっと確認: デコード機能: ファイルシステムに使うべきでない文字

  • Windowsなら「\/:*?"<>|」が危ない文字

これまでの経過

  • 開発日記/2004-09-25
    • PukiWikiのデータが今後もファイルシステムベースだと仮定する必要はないので、名称をdumpとさせていただきました。
    • ライブラリ部分とそうでない部分を極力分離 (まだ一部混ざっている)
    • アップロード時はファイルの拡張子を自動で識別する (チェックボックスも除去)
    • アップロードしたファイルのサイズ上限をチェックする (実は未チェックだった (^^; )
    • パスワードの認証にpkwk_login() を使用する
    • その他、冗長な部分の削除、コメント追加&英語化、コメントの修正、$varsの使用など
  • 開発日記/2004-09-26
    • cvs:plugin/dump.inc.php (v1.4:1.23)
    • この日の(r1.23までの)修正の大雑把なまとめ:
      • r1.4のバグ修正
      • リストア時: ページ書き込みに flock() を用いる
      • gzopen() で取得したポインタには (fwrite()ではなく) gzwrite() で書きこむ
      • ライブラリとのインターフェースに外部の定数を用いない (隠蔽)
      • 関数/クラスメンバの引数名の整理
      • E_ALL でチェックした結果を反映
      • スタイルの修正
      • クラスメンバの定義順の整理 (使用する順に)
      • クラス内でしか用いない(プライベートな)クラスメンバ名の先頭に '_' を付加
    • などなど
  • 開発日記/2004-10-07
    • cvs:plugin/dump.inc.php (v1.4:1.30)
    • 記録媒体ごとの情報を一箇所に終結
      • global変数なのは不本意なので、またいいアイデアが出たら直すでしょう
      • バックアップファイル (backup/*.tgz) のリストアが可能に(実はそれができない状態であった)
    • その他の単純化

コメント

  • さて、そろそろtrackbackやdiff・・・diffは人気ないのか・・・が追加できそうですね。 -- henoheno 2004-10-09 (土) 00:39:22
  • TODO: 空のファイルをtarにしようとすると「Error message : wiki/(略).txt is not found or not readable. 」 BugTrack2/10 にて解決。-- henoheno 2004-10-21 (木) 22:36:24
  • TODO: アップロードされたファイルのサイズが0の時にはメッセージを出すべき -- henoheno 2004-10-21 (木) 22:36:53
  • TODO: FrontPageなどが空の時、is_freeze() の「list($lines) = get_source($page);」 でWarningがおきる。これはis_freeze()が悪い。 -- henoheno 2004-10-21 (木) 22:37:51
  • TODO: 少なくとも私はまだtarの資料とtarlibを首っ引きにして見てはいないですよ。dumpプラグインとしての作りこみはしていますが、tarlibはブラックボックス扱いしてます :) -- henoheno 2004-10-21 (木) 22:40:23
  • dumpプラグインを実戦投入したい冒険者は、これがあくまでも開発中の物件であることを考慮してお使いくださいね。 -- henoheno 2004-10-21 (木) 22:42:48
  • TODO: cache ディレクトリにゴミが残っているのは気のせいか?それとも立場上いじめるからか? (例: cache/tarlib_GKqxtv, cache/upload6qZdY4) 少なくとも拡張子を付けるべし>自分 -- henoheno 2004-10-30 (土) 15:48:44
    • 拡張子(suffix)については不可能。tempnam() 関数にそのような機能はない。せめてprefixを共通のものとする様に対応する -- henoheno 2004-10-31 (日) 16:21:57
  • official:質問箱3/61 dump プラグインをPukiWiki 1.4.3 で動く様にしてみるテスト -- henoheno 2005-05-14 (土) 22:45:31
  • dump ファイル作成時に、ディスク容量が不足していると、ディスク容量いっぱいまで作成し、エラーメッセージを表示しないで0バイトファイルをダウンロードするようです。 また、キャッシュに、tarlib_create_?????? ファイルが残るため、ディスクが一杯になるようです。 -- 2007-12-08 (土) 22:07:29

zlib 1.2.1?

  • ZLib1.2.1では正常に動作していたのですが1.1.4ではうまくいきませんでした。「?」と表示されるだけです。レンタルサーバなのでヴァージョンアップを待つしかないでしょうか? -- たもん? 2004-11-11 (木) 23:44:00
    • 同じ状態のPukiWikiを二つのサーバーで使っていてZLibの違いしかわかりませんでした。他に見るべき場所があるかご教授お願いします。 -- たもん? 2004-11-22 (月) 17:52:06
    • お試しいただきありがとうございます :) シチュエーションをもう少し詳しく教えて下さい。そのzlib1.1.4が入っているシステムの詳細や、レンタルサーバーとか直前の操作など。「?」 と出るのは本当に全角のハテナですか?さすがにそれは無いと思っています -- henoheno 2004-11-22 (月) 23:31:44

リモートリストア

  • 添付ファイルがたくさんあるとすぐに十数MBになってしまうので、ftpでアップロードしたファイルを展開できるオプションが欲しいです。 -- kyu? 2004-10-11 (月) 21:23:56
  • ふむふむ。これはリモートリストアに限ったリクエストですね。このプラグインについては、「リモートバックアップ」を実現させるためのものだとお考えになった方が良いと思います。リモートリストアはオマケです。順番的にも、tarlibの基礎固めと、dumpプラグイン自体の基本機能がまだ充実していませんしね :) -- henoheno 2004-10-21 (木) 22:34:16
  • また、PHPのアップロードファイルサイズの制限を切り抜けるなどを考え始めると、数十MBのリモートリストアを実現するには、dumpプラグインファイルの枠を越えた取り組みが必要になる気がしています。 -- henoheno 2004-10-21 (木) 22:45:36

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-12-08 (土) 22:07:29
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.324 sec.

OSDN