blog サーバー移行メモ

blog データの引越しを行いました。
そのときの作業メモです。

●MT形式での出力

移転前の blog で対応している入出力フォーマットは MT形式と呼ばれるもの
でした。MT形式のインポートとエクスポートはほとんどの blog でサポート
しており、事実上標準となっているようです。

中身は階層を持たないプレーンテキストで、ツールやスクリプトでも比較容易に
扱うことができます。
各記事の内容や日付などの情報、コメントやトラックバックの情報も含まれています。

●MT形式での入力

Nucleus はプラグインを使うことで MT 形式の読み込みができます。
下記の NP_ImpExp を使用しました。
NP_ImpExp

ただ移転前の blog のデータをそのまま読み込むと、かなり行が詰まった画面と
なりうまく再現されていません。サイトやもとのデータに起因する問題だとは
思いますが、空行が失われてしまうようです。

WordPress ではきれいに読み込めていたので、少々原因を調べました。
NP_ImpExp の

 plugins/sharedlibs/cles/MTFileParser.php

の最後、parseTextSection() を下記のように修正しました。(+の削除)

$lines = preg_split("/(\r?\n)+/", $comment);
	↓
$lines = preg_split("/(\r?\n)/", $comment);

これで空行もそのまま読み込めるようになりました。

●TrackBack

インポート時のログを見るといくつかエラーがでていました。トラックバック
のデータでした。Nucleus は標準で TrackBack に対応していないので、
インポート前に下記の Plugin が必要です。

NP_TrackBack

これできちんと読み込めるようになります。
何度もインポートと全データ削除を繰り返していると、TrackBack のデータ
だけが重複して何個も残ってしまうことがありました。
消すときは、item データ削除前に TrackBack のデータも全部消しておいた方が
よさそうです。

●カテゴリの違い

次の問題はカテゴリの分類です。NP_InpExp では読み込む前に、元の blog と
同じカテゴリをあらかじめ追加しておく必要があります。
それでもきちんと読み込めているものもあれば、分類情報が失われてしまう
ものもありました。

NP_ImpExp は標準で PRIMARY CATEGORY を優先し、なければ CATEGORY を
参照しています。元の blog のデータは CATEGORY に情報が入っていたので、
読み込み時に無理やり CATEGORY を参照するように書き換えました。

NP_ImpExp.php importEntry() の先頭に下記の行を追加。

$entry['PRIMARY CATEGORY'] = $entry['CATEGORY'];

●コメントとトラックバックの時刻

読み込んだデータのコメントとトラックバックだけ、日付がリセット(0=1970年)
されてしまう問題が発生しました。
いろいろ調べたところ、DB に渡す日付が ‘/’ スラッシュ区切りになっていた
のが原因でした。これを ‘-‘ ハイフン区切りにしたところ、日付も正しく
読み込まれるようになりました。

NP_ImpExp.php importPing() と importComment() の2箇所あります。
下記のように変更しました。

$timestamp = date("Y/m/d H:i:s", $timestamp);
	↓
$timestamp = date("Y-m-d H:i:s", $timestamp);

このとき試していたのは SQLite 版だったので、もしかしたら MySQL では
スラッシュでも問題ないのかもしれません。マニュアル上はハイフンの方が
正しい形式のようです。