Current Era is Heisei.

mit Google.co.jp suchen.

PukiWiki Plus! の dump プラグインで tar ball をリストアする工具

椅子人が使っている「PukiWiki Plus!」 という Wiki エンジンでは、 Dump プラグインでデータをまとめてバックアップすることはできても、 なんと、それを書き戻す機能がまともに機能しません。 というわけで、何とかしてデータをアップロードするためのコードを考作してしまいました。

WikiのURL
URLの /index.php?cmd=dump などは省略できます。
ただし、フォルダ名の最後の「/」 はきちんと書いてください。


書き戻すファイル

※注意※


資料:絶対パスでtar ballを作成する方法

【警告】

このセクションでは、 あなたがコマンドラインからのファイル操作を一通り理解していること、つまり、 下記のコマンドの意味がきちんと理解できることを前提にしています。

何もわからずにただコマンドだけを打ち込んでいると、 最悪の場合、Wiki のコンテンツが丸ごと破壊されてしまったり、 OS が正常に機能しなくなったりしますので、 下記の内容を読んで、不明点を一通り調べてもまだよく理解できない場合は、 きちんとわかる人に作業を代行してもらってください。

Windows の場合

まず、GnuWin32bsdtar を入手してください。GnuWin32 以外の tar コマンドでも -P オプションさえ使えれば同様のことはできますが、 その場合、tar コマンドに対して /var… のように絶対パスを与えたときに、 それがどこを指すのかをきちんと把握しておいてください。
(たとえば、MSYSbsdtar.exe コマンドで /var/www と指定すると、 C:\MinGW\msys\1.0\var\www を見に行きます。)

作業用に、ルートディレクトリに書き込めるテキトーなドライブを用意します。 仮に、空のUSBメモリが U: にささっているものとして、 それを使うことを考えましょう。

以下では、Wiki ページ 「FrontPage」の内容をサーバ上の /var/www/example.com/data/wiki/46726F6E7450616765.txt というファイルとしてアップロードする、 という例で記述します。

まず、上記の構成に一致するフォルダを作ります。 PukiWiki Plus のエンジンでは、たとえ Web サーバの OS が Windows でも、 半角アルファベットの大文字と小文字は厳密に区別しますので、 間違いのないようにしてください。

C:\Users\delmonta\Desktop> cd /d u:\
U:\> md var
U:\var> md www
U:\var\www> md example.com
U:\var\www\example.com> md data
U:\var\www\example.com\data> md wiki
U:\var\www\example.com\data> start wiki

このコマンドは、コマンドプロンプトの「拡張機能」が有効になっている場合 (デフォルトでは有効になっているはずです)、次のように簡略化できます。

C:\Users\taro\Desktop> cd /d u:\
U:\> md \var\www\example.com\data
U:\> start \var\www\example.com\data

最後の start コマンドでフォルダが開きますので、その中に、 下記の3つのフォルダを必要に応じて作ります。

もちろん、アップロードするのがたとえばテキストデータだけという場合には、 wiki フォルダだけを作ればそれでOKです。

そのあと、次のようにコマンドを入力してください。 コマンド bsdtarにオプション 'P' をつけるのがミソです。

U:\var\www\example.com\data> cd \
U:\> set path="C:\Program Files\GnuWin32\bin";%path%
U:\> bsdtar Pzcvf upload.tar.gz /var/www/example.com/data
a /var
a /var/www
a /var/www/example.com
a /var/www/example.com/data
a /var/www/example.com/data/wiki
a /var/www/example.com/data/wiki/46726F6E7450616765.txt
  :
U:\> 
こうやってできた upload.tar.gz をこのフォームからアップロードしてください。

UNIX 系 OS(MacOS X を含む)の場合

一般に、UNIX 系 OS の場合、/var/home のようなトップフォルダを追加するためには root 権限が必要です。 また、特に /var はパーティション構成によっては容量が限られているため、そこにデータを置くことも現実的ではありません。

従って、データの実体は自分のホームディレクトリ、 または /tmp に置いて、 アップロード先のフォルダ構成に合わせてシンボリックリンクをうまく使うことを考えます。

ここでは、既に別の Wiki からダウンロードしてきたデータを別のサーバに移し替える例でご説明します。 移転先の Wiki では、フロントページ「FrontPage」をサーバ上の /var/www/example.com/data/wiki/46726F6E7450616765.txt というファイルとしてアップロードすることになっているケースことにします。

まず、元のファイルを適宜の場所に展開します。

[~]$ mkdir w
[~]$ cd w/
[~/w]$ tar zxvf ../MyWiki.tar.gz
tar: Removing leading '/' from member names
x home/
x home/penguin/
x home/penguin/public_html/
x home/penguin/public_html/MyWiki/
x home/penguin/public_html/MyWiki/contents/
x home/penguin/public_html/MyWiki/contents/wiki/
x home/penguin/public_html/MyWiki/contents/wiki/46726F6E7450616765.txt
  :
[~/w]$

ここで、/var/www は既に存在すると仮定します。作るべきフォルダは /var/www/example.com/data/ なので、 次のようにします。

[~/w]$ cd /var/www
[/var/www]$ sudo mkdir example.com
Password: ********
[/var/www]$ cd example.com/
[..www/example.com]$ sudo ln -s ~/w/home/penguin/public_html/MyWiki/contents data
[..www/example.com]$ cd /
[/]$ bsdtar PLcvf ~/w/upload.tar.gz /var/www/example.com/data
a /var/www/example.com/data
a /var/www/example.com/data/wiki
a /var/www/example.com/data/wiki/46726F6E7450616765.txt
  :

もし bsdtar がなくて gnutar だけがある場合は、 オプション 'L' の代わりに 'h' をうまく使ってください。

アップロードに成功したら、このとき作った /var/www/example.com フォルダは消しておきましょう。 これを忘れると後日、鯖缶さんにおこられます :-)

[/]$ cd /var/www
[/var/www]$ sudo rm -rfv example.com/
Password: ********
example.com/data
example.com/

参考資料

おわりに

私がこのページを書いたのは、綾しいカルトQ〔@AyaC_KaltQ〕というサイトをメンテナンスする必要に迫られてのことです。 Dump プラグインはあるにもかかわらず、 ダウンロードしたデータをそのまま書き戻そうとしてもうまくいかず、 検索してみたら上記のサイトがヒットした次第。

というわけで、私がアップロードに成功したのは世間様の恩恵によるものなので、 その成果は当然、世間様に還元いたします。 PukiWiki Plus! でお困りの方はどなたでもご自由にお使いください。


Valid CSS
© DENNOU GEDOU GAKKAI, N. D. D. 2016/08/15 02:34 JST

クリックするとメーラーが立ち上がります