#author("2022-01-13T00:51:19+09:00;2022-01-13T00:50:51+09:00","","") #author("2022-01-13T00:52:06+09:00","","") *[PLUGIN] dumpプラグイン (バックアップ&リストア機能) の作成 [#ee8ddb55] -ページ: [[BugTrack]] -投稿者: [[henoheno]] -優先順位: 普通 -状態: 完了 -カテゴリー: 本体新機能 -投稿日: 2004-09-26 (日) 19:44:01 -バージョン: 1.4.4 -リリース予定バージョン: 1.4.5 -------------------------- #contents -------------------------- **メッセージ [#b646c117] [[teanan]]さん作成のバックアップ/リストアプラグイン([[official:自作プラグイン/tarfile.inc.php]])を PukiWiki に追加します。このプラグインはネットワーク越しにPukiWikiのバックアップ(*.tar/*.tar.gz)とリストアを可能にします。GPLとして配布はOKとの事です。ありがとうございます。これで助かる人は結構多いでしょう。 - 特徴: -- リモートバックアップを可能にする --- phpファイル単独で動作する (tarやgzipやzipのようなシステムコマンドを呼んでいないし、その設定も不要) -- リモートリストアまで実現している (PHPのファイルアップロード制限の影響は受ける) -- エンコードされている生のページ名を、ディレクトリ階層つきのファイル名にデコードする機能(オプション)がある --------------------------------------- ** ちょっと確認: tar の構造 [#vae7feed] - tar の構造 -- http://www.redout.net/data/tar.html --------------------------------------- ** ちょっと確認: Zlibモジュール [#v5b3bc70] - PHP マニュアル: zlib圧縮関数 -- http://jp2.php.net/manual/ja/ref.zlib.php -- "PHP 4.3.0 以降、zlib モジュールは php バイナリにビルトイン" - backupプラグインは以下の様にして zlib モジュールおよび関連関数の有無を判定している if (function_exists('gzfile')) ※1.4.4のCVS版では以下に改めた if (extension_loaded('zlib')) -- 変更理由は、[[クリンナップのまとめ - 記述内容の整理>BugTrack/779#bfd9d1c6]] を参照 --------------------------------------- ** ちょっと確認: デコード機能: ファイルシステムに使うべきでない文字 [#vcc87a8a] - Windowsなら「\/:*?"<>|」が危ない文字 --------------------------------------- ** これまでの経過 [#v8828a90] - [[開発日記/2004-09-23]] -- [[teanan]]さん作成のバックアップ/リストアプラグイン([[official:自作プラグイン/tarfile.inc.php]]) をCVSに追加 - [[開発日記/2004-09-25]] -- PukiWikiのデータが今後もファイルシステムベースだと仮定する必要はないので、名称をdumpとさせていただきました。 -- ライブラリ部分とそうでない部分を極力分離 (まだ一部混ざっている) -- アップロード時はファイルの拡張子を自動で識別する (チェックボックスも除去) -- アップロードしたファイルのサイズ上限をチェックする (実は未チェックだった (^^; ) -- パスワードの認証にpkwk_login() を使用する -- その他、冗長な部分の削除、コメント追加&英語化、コメントの修正、$varsの使用など - [[9/26までのコメントは別ページに移動>./過去のコメント#f29ea054]] - [[開発日記/2004-09-26]] -- [[cvs:plugin/dump.inc.php]] (v1.4:1.23) -- この日の(r1.23までの)修正の大雑把なまとめ: --- r1.4のバグ修正 --- リストア時: ページ書き込みに flock() を用いる --- gzopen() で取得したポインタには (fwrite()ではなく) gzwrite() で書きこむ --- ライブラリとのインターフェースに外部の定数を用いない (隠蔽) --- 関数/クラスメンバの引数名の整理 --- E_ALL でチェックした結果を反映 --- スタイルの修正 --- クラスメンバの定義順の整理 (使用する順に) --- クラス内でしか用いない(プライベートな)クラスメンバ名の先頭に '_' を付加 -- などなど - [[10/07までのコメントは別ページに移動>./過去のコメント#v20b8d6c]] - [[開発日記/2004-10-07]] -- [[cvs:plugin/dump.inc.php]] (v1.4:1.30) -- 記録媒体ごとの情報を一箇所に終結 --- global変数なのは不本意なので、またいいアイデアが出たら直すでしょう --- バックアップファイル (backup/*.tgz) のリストアが可能に(実はそれができない状態であった) -- その他の単純化 -------------------------------------------- *** コメント [#neb4f547] -さて、そろそろ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]] &new{2004-10-21 (木) 22:36:24}; -TODO: アップロードされたファイルのサイズが0の時にはメッセージを出すべき -- [[henoheno]] &new{2004-10-21 (木) 22:36:53}; -TODO: FrontPageなどが空の時、is_freeze() の「list($lines) = get_source($page);」 でWarningがおきる。これはis_freeze()が悪い。 -- [[henoheno]] &new{2004-10-21 (木) 22:37:51}; -TODO: 少なくとも私はまだtarの資料とtarlibを首っ引きにして見てはいないですよ。dumpプラグインとしての作りこみはしていますが、tarlibはブラックボックス扱いしてます :) -- [[henoheno]] &new{2004-10-21 (木) 22:40:23}; -dumpプラグインを実戦投入したい[[冒険者]]は、これがあくまでも開発中の物件であることを考慮してお使いくださいね。 -- [[henoheno]] &new{2004-10-21 (木) 22:42:48}; -TODO: cache ディレクトリにゴミが残っているのは気のせいか?それとも立場上いじめるからか? (例: cache/tarlib_GKqxtv, cache/upload6qZdY4) 少なくとも拡張子を付けるべし>自分 -- [[henoheno]] &new{2004-10-30 (土) 15:48:44}; --拡張子(suffix)については不可能。tempnam() 関数にそのような機能はない。せめてprefixを共通のものとする様に対応する -- [[henoheno]] &new{2004-10-31 (日) 16:21:57}; -[[official:質問箱3/61]] dump プラグインをPukiWiki 1.4.3 で動く様にしてみるテスト -- [[henoheno]] &new{2005-05-14 (土) 22:45:31}; - dump ファイル作成時に、ディスク容量が不足していると、ディスク容量いっぱいまで作成し、エラーメッセージを表示しないで0バイトファイルをダウンロードするようです。 また、キャッシュに、tarlib_create_?????? ファイルが残るため、ディスクが一杯になるようです。 -- &new{2007-12-08 (土) 22:07:29}; //#comment --------------------------------------- ** zlib 1.2.1? [#td8c6d39] -ZLib1.2.1では正常に動作していたのですが1.1.4ではうまくいきませんでした。「?」と表示されるだけです。レンタルサーバなのでヴァージョンアップを待つしかないでしょうか? -- [[たもん]] &new{2004-11-11 (木) 23:44:00}; --同じ状態のPukiWikiを二つのサーバーで使っていてZLibの違いしかわかりませんでした。他に見るべき場所があるかご教授お願いします。 -- [[たもん]] &new{2004-11-22 (月) 17:52:06}; --お試しいただきありがとうございます :) シチュエーションをもう少し詳しく教えて下さい。そのzlib1.1.4が入っているシステムの詳細や、レンタルサーバーとか直前の操作など。「?」 と出るのは本当に全角のハテナですか?さすがにそれは無いと思っています -- [[henoheno]] &new{2004-11-22 (月) 23:31:44}; //#comment -------------------------------------------- ** リモートリストア [#v37e9d1e] -添付ファイルがたくさんあるとすぐに十数MBになってしまうので、ftpでアップロードしたファイルを展開できるオプションが欲しいです。 -- [[kyu]] &new{2004-10-11 (月) 21:23:56}; -ふむふむ。これはリモートリストアに限ったリクエストですね。このプラグインについては、「リモートバックアップ」を実現させるためのものだとお考えになった方が良いと思います。リモートリストアはオマケです。順番的にも、tarlibの基礎固めと、dumpプラグイン自体の基本機能がまだ充実していませんしね :) -- [[henoheno]] &new{2004-10-21 (木) 22:34:16}; -また、PHPのアップロードファイルサイズの制限を切り抜けるなどを考え始めると、数十MBのリモートリストアを実現するには、dumpプラグインファイルの枠を越えた取り組みが必要になる気がしています。 -- [[henoheno]] &new{2004-10-21 (木) 22:45:36}; ---- - 過去のBugTrackですが [[1.4.5>official:PukiWiki/Download/1.4.5]] からdumpプラグインは同梱されているので完了にしておきます -- [[umorigu]] &new{2022-01-13 (木) 00:52:06}; #comment