椅子人が使っている「PukiWiki Plus!」 という Wiki エンジンでは、 Dump プラグインでデータをまとめてバックアップすることはできても、 なんと、それを書き戻す機能がまともに機能しません。 というわけで、何とかしてデータをアップロードするためのコードを考作してしまいました。
WikiのURL 書き戻すファイル
.tar
または
.tar.gz
ファイルとして作成してください。
.tgz
ではアップロードできません。
.tar.gz
形式に圧縮しても制限に引っかかる場合は、
適宜分割してアップロードしてください。
【警告】 このセクションでは、 あなたがコマンドラインからのファイル操作を一通り理解していること、つまり、 下記のコマンドの意味がきちんと理解できることを前提にしています。 何もわからずにただコマンドだけを打ち込んでいると、 最悪の場合、Wiki のコンテンツが丸ごと破壊されてしまったり、 OS が正常に機能しなくなったりしますので、 下記の内容を読んで、不明点を一通り調べてもまだよく理解できない場合は、 きちんとわかる人に作業を代行してもらってください。 |
まず、GnuWin32 の
bsdtar
を入手してください。GnuWin32 以外の tar
コマンドでも -P
オプションさえ使えれば同様のことはできますが、
その場合、tar
コマンドに対して
/var…
のように絶対パスを与えたときに、
それがどこを指すのかをきちんと把握しておいてください。
(たとえば、MSYS の
bsdtar.exe
コマンドで /var/www
と指定すると、
を見に行きます。)
作業用に、ルートディレクトリに書き込めるテキトーなドライブを用意します。
仮に、空のUSBメモリが U:
にささっているものとして、
それを使うことを考えましょう。
以下では、Wiki ページ 「FrontPage
」の内容をサーバ上の
というファイルとしてアップロードする、
という例で記述します。
まず、上記の構成に一致するフォルダを作ります。 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
…Wikiの各ページのテキストデータ
attach
…各ページにつけた添付ファイル
backup
…バックアップファイルがほしい場合はここに置く
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 の場合、/var
や /home
のようなトップフォルダを追加するためには root
権限が必要です。
また、特に /var
はパーティション構成によっては容量が限られているため、そこにデータを置くことも現実的ではありません。
従って、データの実体は自分のホームディレクトリ、
または /tmp
に置いて、
アップロード先のフォルダ構成に合わせてシンボリックリンクをうまく使うことを考えます。
ここでは、既に別の Wiki からダウンロードしてきたデータを別のサーバに移し替える例でご説明します。
移転先の Wiki では、フロントページ「FrontPage
」をサーバ上の
というファイルとしてアップロードすることになっているケースことにします。
まず、元のファイルを適宜の場所に展開します。
[~]$ 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
は既に存在すると仮定します。作るべきフォルダは
なので、
次のようにします。
[~/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'
をうまく使ってください。
アップロードに成功したら、このとき作った
フォルダは消しておきましょう。
これを忘れると後日、鯖缶さんにおこられます :-)
[/]$ cd /var/www [/var/www]$ sudo rm -rfv example.com/ Password: ******** example.com/data example.com/
私がこのページを書いたのは、綾しいカルトQ〔@AyaC_KaltQ〕というサイトをメンテナンスする必要に迫られてのことです。
Dump
プラグインはあるにもかかわらず、
ダウンロードしたデータをそのまま書き戻そうとしてもうまくいかず、
検索してみたら上記のサイトがヒットした次第。
というわけで、私がアップロードに成功したのは世間様の恩恵によるものなので、 その成果は当然、世間様に還元いたします。 PukiWiki Plus! でお困りの方はどなたでもご自由にお使いください。