« 動態保存 | メイン | ソニエリ FOMA、ついに登場 »

MT の崩壊と奇跡の復活

サイトのデザインが MT3.2 のデフォルトになってしまったのには訳があります。

MT3.17 から 3.2 へのアップグレードに失敗しました。どうやらユーザ名に全角文字を使っていたことが原因のようで、アップグレード後、mt.cgi がエラーで使えなくなってしまい管理不能な状態に。エントリのバックアップなんぞ取っていません。ああ、もうだめだ。

しかし Berkeley DB の db/ ディレクトリの中身が残っています。そうさおいらにはまだ力が残っているぜ。残されたファイルからのサルベージを試みました。

というわけで、Berkeley DB のデータを復元して、MT へのインポート用の書式に整形することにしました。Perl でとりあえず entry.db ファイルの内容をハッシュにつっこんでみると、エントリ ID をキーにして、その他各エントリのデータ(投稿者とか公開状態とか記事の内容とか)がひとまとめになっている様です。

このエントリのデータがくせ者で、テキスト部分は読めるのですが、各項目がさらに妙なバイナリコードで区切られているらしく私のヘタレ Perl 技術では切り分けることができません。そこで舞台を秀丸エディタ上に移し、正規表現による置換とキーマクロを駆使してエントリ部分の整形には成功しました。

さらに、カテゴリ、コメント、トラックバックのデータが別 DB で存在しています。
カテゴリについては category.db で [カテゴリ ID] = [カテゴリ名]、fileinfo.db で [エントリ ID] = [カテゴリ ID] という形で対応付けがされていました。これはある程度自動化することができ、実質数分でカテゴリの適用完了。

コメント、トラックバックは、それぞれのデータの中に対応するエントリ ID が含まれているという感じ。関連づけされているエントリ ID を1つ1つ確認しながら、先ほど整形したエントリデータの、該当するエントリの本文の下にコメントなどをコピペするという作業になりました。トラックバックは十数件しかなかったけどコメントは 100 件以上あったのでこれが一番大変な作業でした。

これでようやくインポート用データが完成し、改めてインストールし直した MT にいざインポート。
こうして無事に記事のたぐいは復旧することができました。

ただし、まだテンプレートを復旧してないのでこんなデザインなのです。良い機会なのでデザインはリニューアルしようかな〜と思っています。なかなか思いつきませんが。

コメント

お疲れ様でしたー。
めでたいっすね。

しかし、ユーザー名を全角にしてなくてよかったっすよ。

コメントを投稿