« <$BaseURL$> の置換は RSS では効かない | Main | HaloScan のコメント数を全部表示する »
ハードディスクの障害などで失われたエントリを復旧させるのは実に簡単でした。実際にやった復旧方法をレポートします。ただし失われたエントリが少ない場合です。多いと大変な方法ですから。
先日、使用している PowerBook の ハードディスクが壊れて 当ブログのエントリ「 <$BaseURL$> の置換は RSS では効かない 」のデータが失われてしまいました。Thingamablog のデータにはこのエントリを書く前のバックアップしかなかったのです。
このバックアップからデータを復元して、残るは一つの失われたエントリを回復することが必要でした。
Thingamablog のエントリは 1 から昇順に整数で ID が割り振られていきます。残っているエントリの最後の ID は 83
で、失われたエントリの ID は 84 です。これは失われたエントリの permalink の URL にあるファイル名
entry_84.html からわかります。
この ID が付くエントリをもう一度同じ内容で書けばよいのです。ただし、投稿日時が同じ時刻になるようにします。
なぜ同じ ID である必要があるかと言うと、そのエントリのようにコメントやトラックバックが付いていない場合はそれほど気にする必要がありませんが、付いている場合は別な ID で復旧させるとせっかく貰ったコメントやトラックバックがまるで付いていない状態になってしまうからです。更に他所からリンクされていたりするとサーバに残っている古い復旧前のエントリへ誘導されて新しいエントリに来てもらえません。サーバにアップされているファイルを掃除したりするときにリンク切れになってしまうばかりでなく、新しい復旧後のエントリに追記や訂正をしても反映されていない方を見に行かれてしまいます。
必ずしも残っているエントリの最後の ID の次の番号が公開されているわけではないと思います。下書きエントリや削除したエントリがある場合は ID 番号が飛び飛びになるからです。
そのような場合はダミーのエントリを下書きとして書いて投稿します。ダミーですから公開はしないようにします。そして次の ID が復旧させたいエントリの ID の一つ手前になるようにしてください。
そして復旧したいエントリをブラウザで開いておいてください。そのエントリの中で使っている画像がもしローカルから失われているのでしたらそれもダウンロードしておきます。
普段は普通の編集モードでエントリを書く人でも復旧させるときは HTML 編集モードで行ってください。こちらの方が楽です。
私は画像については実際にやっていないませんが、Thingamablog のインターフェースを用いて挿入する画像は
Thingamablog から見ると
file://…/ファイル名
という URL になっています。そして画像ファイル置き場に挿入するために選んだ画像がコピーされています。
公開の際には URL が置き換えられて画像ファイル置き場にあるファイルがアップロードされる仕組みなのですが、サーバを換えるなどして URL が変わると公開後の URL のまま HTML を書いておくと画像が失われてしまいます。ここは Thingamablog の正規の画像の付け方を踏襲しておくのが吉です。
刻々と秒が進んでいくので以降の操作にかかる時間を考慮して少し前の時間に設定するのがコツです。
iBlog の場合はエントリの ID がエントリを最初に保存した日時になるため同じ ID のエントリを作り出すのに iBlog のデータファイルを直接操作する必要がありました。(参照「 エントリを失った。バックアップもない。あなたならどうする? 」「 iBlog エントリの復元について補足 」) このため一般にはかなり面倒なことになるだけでなく慎重にやらないとデータを壊してしまいます。更に一部のデータに不整合が残ってしまいます。
この点、Thingamablog は実に楽でした。同じ内容を同じ ID で書くために Thingamablog の正規のユーザインターフェースを使うだけで済むからです。そして正規のインターフェースで復旧させられるということは iBlog のように一部のデータに不整合が残ってしまう懸念がないということです。
作者が予めここまで考慮したというわけではないのでしょうが、こういうところで楽になるというのは設計のセンスが効いてくるものです。改めて Thingamablog は偉いなあと思いました。