※ イメージ図(©photoAC)
KentWeb 様の掲示板システムは、Perl で記述された優れたシステムです。バージョンアップや新しいシステムの開発も行われています。
古い掲示板システムを新しい掲示板システムに更新したいとき、それまでの掲示板の投稿データも移行したいことがあります。ここでは、その方法を解説しています。
なお、KentWeb 様の掲示板システムでは、投稿データの形態が数種類あり、データが同じ形態の場合の移行方法をお示ししています。
1.はじめに
執筆日時:
最終改訂:
※ イメージ図(©photoAC)
KentWeb 様の掲示板システムは、WEB サイト掲示板を設置するときに一般的に用いられるもので、かつては「さくらのレンタルサーバー」が公式採用していたこともあり、使用しておられるサイトはかなり多い。
本サイトでも、サイトを創設したときから愛用させて頂いている。最初は、「労働安全衛生 交流掲示板」だけだったが、その後、3件の掲示板を増設(1件はメンバー専用サイトに設置)して現在に至っている。
【当サイトに設置した掲示板】
その後、新しい機能の使いやすい掲示板システムが発表されたため、そちらに切り替えることが本サイトの課題のひとつとなっていた(※)。また、初期のものは Shift-JIS で記述されており、丸付数字などは文字化けすることがあったこともある。
※ 上記のリストのリンク先は、いずれも新しいシステムに切り替えた後のものである。
なお、労働安全衛生 交流掲示板は、全く新しいタイプの掲示板に切り替えたため投稿データの移行はできなかった。そのため、それまでの投稿データは古いシステムと同様な新しい掲示板システムに移行した上で、旧・労働安全衛生 交流掲示板として閲覧のみできるようにして別に残した。
とはいえ、衛生管理者試験掲示板とコンサルタント試験情報交換掲示板はかなりの投稿量とアクセスがある。そのため、それまでの投稿データを移行したかったが、その方法が分からなかったのである。
今回、データの移行の方法を調べ、以前のシステムの投稿データを移行して、新しい掲示板に更新したので、その方法を紹介する。
2.投稿データの移行方法
(1)「現行データ」の移行
※ イメージ図(©photoAC)
まず、KentWeb 様の掲示板システムは、データの形態が数種類ある。本稿のデータ移行の方法は、この形態が一致している場合についてである。なお、データの移行方法は、いずれの形態でも同じである。
※ 「ノーマル掲示板」、「レス式掲示板」、「ツリー式掲示板」でそれぞれデータの形態が異なるようである。
データは、「現行のデータ」と過去ログのデータを移行する。その場合、init.cgi に現行データの最大件数と、過去ログ1件当たりの最大件数を指定することができるものでは、新旧の掲示板システムでその数字をあらかじめ一致させておく必要がある(※)。
※ 新旧のいずれの掲示板でも、init.cgi でデータの件数指定が出来なければ、旧システムのデータを移行するときに、新システムの最大データの件数だけ移行し、残りは手作業で過去ログの方に入れてやればよい。
さて、データの移行方法は簡単で、旧システムの data フォルダにある data.cgi か log.cgi ファイルを探して、その中のデータを新システムの log.cgi にコピーするだけである(※)。もちろん、旧システムが Shift-JIS で記載されている場合は、ファイルを移動したり名称を変更するだけではだめで、ファイルの中のデータをコピーする必要がある。
※ SUN BORD のような html 形式で表示される掲示板では、データをコピーした後、新しい投稿か管理システムによる変更をしないと、コピーしたデータが反映されないので留意されたい。
(2)過去ログのデータの移行
※ イメージ図(©photoAC)
過去ログが必要なければ別だが、実際には過去ログも残している場合が多いと思う。過去ログは、past フォルダに入っている。過去ログの数が多ければ、0001.cgi、0002.cgi、0003.cgiなどといくつかのファイルに分かれている。
まず、新システムの past フォルダ内の 0001.cgi をコピーして、旧システムと同じだけの数のファイルを作り、0002.cgi、0003.cgiなどと名称を変更する。そして、後は、旧システムのファイルの中のデータを新システムのファイルにコピーすればよいのである(※)。
※ 投稿の最大の数が新旧システムで異なっていたら、新システムの最大数に合わせてコピーする数とファイルを調整する必要がある。
最後に、新システムの中から、pastno.dat ファイルを探す。このファイルは数字がひとつ入っているだけなので、その数値を新システムの過去ログデータファイルの数に一致させる。これで、すべてのデータが移行されるはずである。
(3)301リダイレクト
最後に、旧掲示板にアクセスしてきた読者を新掲示板へ誘導するために、301リダイレクト(※)を行おう。
※ 旧ページ(サイト)にアクセスしようとした閲覧者を、別の URL に恒久的に転送する処理のこと。
旧掲示板を設置してあったディレクトリ(フォルダ)に、.htaccessファイルを置き、その内容を次のようにする。それだけで、旧掲示板のURLにアクセスしてきた読者を新掲示板へ誘導することができる。
// 301リダイレクトで新掲示板へ誘導
RewriteEngine On
RewriteRule ^light.cgi$ https://example/sunbbs/html/index.html [R=301,L]
ここで、2行目の「light.cgi」は、旧掲示板の実行ファイル名に置き換え、「https://example/sunbbs/html/index.html」は新しい掲示板の実行ファイルの場所に置き換える必要がある。
こうすることで、閲覧者はとくに意識することなく、新しい掲示板を閲覧することができるようになる。
もちろん、旧掲示板は、.htaccessファイル以外は削除してしまって構わない。なお、.htaccessファイルは、とくに必要がなければそのままにしておけばよいし、削除する場合でも1年はそのままにしておいた方がよい。
3.最後に
※ イメージ図(©無料の写真素材「ぱくたそ」 )
私は、3つの掲示板を初期の LIGHT BOARD 掲示板から、SUN BORD 掲示板にデータを移行した。この掲示板は html で表示されるため、表示速度が早いというメリットがある(※)。
※ ただし、テンプレートを変更しても、その後、最初の投稿か管理者による修正等があるまで、変更は反映されない。
また、それまでの Shift-JIS で書かれた掲示板とは異なり、丸付数字が文字化けしないというメリットもある。さらに、新システムでは「参照先」の URL を非表示にできるので、スパム投稿が少なくなる(※)というメリットも大きい。
※ とはいえ、掲示板システムを変更してからしばらくはスパム投稿が増える。ただちに削除して、再投稿できなくなるよう「禁止Word」や「禁止ホスト」に追加する必要がある。
一方、1つの掲示板はツリー表示形式だったので、Web-Form 掲示板に移行した。しかし、Joyful Note の方が見やすいと思ったので、思い切ってデータ形式が異なる Joyful Note に移行することした。この場合、データを移行できないので、Web-Form 掲示板を旧・掲示板として書き込みができないようにしてそのまま残し、Joyful Note は全くゼロから始めることとした。
KentWeb様の掲示板システムは、Perl を用いたシステムなので、一般論として新しい方がセキュリティ対策もとられているだろう。また、新システムで画面が見やすくなったことも大きなメリットである。
新しい掲示板を使いたいが、古い投稿データも残したいと考えておられる方の参考になればと思う。