Garmin Edge 705の破損トラックログを修復
GPS付サイコンのGarmin Edge 705。小豆島サイクリングのトラックログが、ファイルエラーでぶっ壊れて読めなくなった。手を尽くしてそれを修復したときの話。
いつもはEdge705をUSBでパソコンにつないで、Garmin Training Centerでインポートしているのだけど、受信ボタンをいくら押しても読み込めないので直接フォルダを開いたらえらいことになっていた。わけのわからない名前のフォルダが大量にできていたのだ。
そのときの状態をキャプチャしてなかったのだけど、とりあえずEdge705が割り当てられたドライブをディスクチェックするとこんな具合にFOUND.001フォルダができた。普段だったらあきらめて削除しておしまいなのだが、どうしても復活させたかった。
FOUND.001フォルダの中身はこんな感じ。FILE000x.CHKというファイルがずらり。「回復されたファイルの断片」という注釈がついたファイル達。これらが重要なカギを握るのだ・・・。
かなり大昔に書いた記事にちらっと書いた例でいうと、ディスクの中のファイル台帳の一部が消えてしまったような状態だったのだろう。台帳がないので、Windowsのディスクチェックでひと部屋ひと部屋ガサ入れして調べ上げた結果がこんな感じ。あとは科捜研で張り合わせていけば事件解決!?
サイズが8KB一律なのは、ディスクの中のひと部屋の容量(=クラスタサイズ)が8KBだから。Edge705の内蔵メモリは500MB弱でFAT16フォーマット。その場合の規定のクラスタサイズは8KBということなので、つじつまがあう。
ひとつだけ大きなファイルがあるけれど、それはきっとたまたま連続したクラスタにあったおかげで、同じファイルということで識別してもらえたのだろう。これはとってもありがたい。
話がそれつつあったので戻してみる。トラックログが残るHistoryフォルダにはその日のログファイルらしきものがあるのだが、ファイルサイズが半分くらい。受信ボタンで読めないから、Training Centerでメニューからインポートを試みてみたら「無効なTraining Center XMLファイルのため開くことができません」、だと。XMLなんでエディタで開いて修復していくことを考えよう。
まずはディスクチェック後の状態をそのままバックアップしておく。修正を間違えるかもしれない。一見全然関係ないファイルに断片が取り込まれていたりすることもあった。そういうのを誤って削除してしまわないように。
壊れたXMLも読めるXMLエディタがあるかもしれないけれどよくわからなかったんでテキストエディタで開いた。EmEditorを利用させて頂いている。Edge705のログは改行が入っていないので見にくい。
ひとつひとつのレコードは<Trackpoint>~</Trackpoint>となっている。とりあえずそこだけ見やすくするように、このように置換機能を使って改行を入れた。
置換が終わると随分見やすくなった。
そのままざーっとスクロールさせながら見ていくと、一行の長さに随分違いがあったりする。特にこういう風に時刻が大きく飛んでいる部分も見つかる。おかしなところで</LAP>の閉じタグが来ているし、そこでデータが飛んでいるらしい。
同様に、先ほどの断片化ファイルをひとつひとつ開いてみる。全く関係ないのもあれば、こんな風にあきらかにこの日のログの断片とわかるものもある。既に本体に含まれている部分がそのまま断片化されている場合もある。
データが飛んだところに当てはまりそうな断片をひとつひとつ貼り付けて合わせていく。ひととおりまとまったところでTraining Centerに読ませてみたりするが、まだうまくいかない。細かいところで間違いがあるようだ。
XMLにはスキーマという規則が定義されている。Training Center用のXMLはこれこれこういうタグがないといけません、とかなんとか書いてあるもので、XMLファイルの先頭の方にURLが書いてあって、それをブラウザなんかで開くと中を見ることができる。この規則に従ってさえいれば、少々データが飛び飛びでもTraining Centerで読み込むことができる。
XMLのファイルがスキーマに沿って間違いなく生成されているかどうかをチェックするツールがある。多分世の中にはいろいろあるんだろうけど、DecisionSoftのXML Schema Validatorというのを見つけたので使わせて頂いた。
先程のスキーマのファイルをダウンロードしておいて、壊れたXMLと一緒にValidatorにアップロードするとチェックして結果を表示してくれる。ひとつひとつ修復して、修復できず断片も見つからない場合はその行をさくっと削除。ひとつくらいレコードがなくなってもどうってことないトラックログだからこそ修復できるのだなぁ。
だいぶ回復してきた。
これで、完成!
FOUND.001フォルダ内のファイルだけじゃなくて、全然関係ないフォルダにある全然関係なさそうな名前のファイルの中にも紛れていたりしたけれど、断片をひとつひとつ重ね合わせるとなんとかなった。
画像とかExcelなんかのドキュメントじゃこうもいかない。テキストファイルであって、順番(この場合は時間)がすぐわかって、しかも少々データが欠落しても大きな問題にならないからこそ修復できるのだ。よかったよかった。
コメント
お久にございます。HPの更新がないので、まさか恋の病にでもとか、河童業にご専念かとか案じておりました。更新されたブログはマニアックすぎてついていけませんが、とにかくお元気な様子で、今年もよろしくと季節外れの挨拶でおます。
どうもご無沙汰しております。今年もよろしくお願い致します。
ここ数日、生存確認のメールをたくさん頂いておりました。
もしものときには皆様の枕元にてご連絡申し上げる所存でございますので御札や魔除け等をご利用にならないようにお願い致します