今回の手順はWindowsのディスクの修復でフォルダがファイルに置換されてしまったときに直す方法です。
ご注意事項:この記事には通常OSではアクセスしないディスクの直接アクセスを行いますのでデータ損失のリスクのある手順を含んでいます。説明の都合上、フォルダーとディレクトリの表記が混在しています。
0.はじめに
経緯です。15年ものの古いUSBメモリーをPC-9801シリーズ エミュレーターの動作テストや記事の執筆に使っていました。このUSBメモリーにはエミュレーターの実行ファイル、設定パラメーター、ディスクイメージ、スクリーンショットが合計1GBくらい保存されていました。
記事としてアップした画像以外のデータはテンポラリ扱いでバックアップは取っていませんでした。HDDの移行作業をしていて優先度が低くなり、一時的にUSBメモリーに保存されたデータが唯一のものになっていました。エミュレーター本体はインターネットで再入手でき、設定もまた行えばよいという考えでした。オリジナルデータは画面のスクリーンショットです。それが「PC98-EM」フォルダに保存されていました。

しかしそういう時に限って破損するものなのですね。このUSBメモリーを接続した状態だとPCのブートが遅くなり、仕方なくUSBメモリーのエラーチェックを実行したところchkdskコマンドによる修復が行われて、フォルダがファイルに置換されてしまいました。FOUND.000の隠しフォルダには FILE0000.CHK ~ FILE0149.CHK の150個の修復された断片ファイルが格納されていました。

修復以前はフォルダ内の一部のファイルが参照できていたのにバックアップをとる前にスキャンから修復へ進む操作を実行してしまったのがよくありませんでした。
ファイル・フォルダ(ディレクトリ)の管理データがおかしくなったという点で、いわゆる論理障害に区分される故障です。専門業者に頼むと数万円~数十万円の料金がかかると思います。
FOUND.000の隠しフォルダにあるファイルを正しく再結合して名前を付け直す修正方法もありますが元は28個だったファイルが150個になっていて手作業では直せそうにないです。
1.対処
(1)リカバリーソフトを試してみた
(2)ディスクアクセス対応のバイナリーエディターでFAT32のディレクトリエントリの属性値を書き換えた
(3)(2)により読み取れるようになったファイルを救出
(4)一旦すべてのフォルダとファイルをバックアップ
(5)USBメモリーを再びチェック (スキャンと修復を実行)
(6)USBメモリーを通常フォーマット
(7)バックアップしたフォルダとファイルをUSBメモリーへ書き戻し
(8)USBメモリーを再びチェックして問題ないことを確認
2.結果
(1)の結果:別の削除したファイルの回復はできましたが、対象の修復で壊れたフォルダ(ファイルになってしまったフォルダ)を戻すことはできませんでした。
誤って削除したファイルに対しての回復は強力でも他の修復操作でおかしくなったデータは表面的には正常な記録として書き換えられているので無理なようです。
(2)の結果:ファイルからフォルダーへ属性を手動で書き換えたので、フォルダとしての表示を回復し、フォルダ内のファイルにはアクセスできました。
(3)の結果:別のストレージに正常にファイルをコピーできました。
(4)の結果:いつまでアクセスできるか不安なのですべてのフォルダとファイルをバックアップしました。
(5)の結果:USBメモリーのディスクエラーは直っておらず再びチェックを実行して修復が走るとフォルダはファイルになってしまいました。
(6)の結果:クイックフォーマットではなく通常のフォーマットをしました。信頼性に欠ける媒体ですがフォーマットは正常終了したのでデータを書き込むことはできそうです。
(7)の結果:正常にすべてのバックアップデータを書き戻せました。
(8)の結果:エラーの無い状態まで回復できました。
3.各工程の主な手順
(1)トランセンド RecoveRxなどのリカバリーアプリを使用します。EaseUS Data Recovery Wizardも有名です。
[1]リカバリーアプリのインストール
[2]対象ディスクのリカバリーを試行
[3]結果の確認
※リカバリーアプリではUSBメモリー、HDD、SDメモリカードなどに対応していますが修復対象のファイル形式が限られています。
参考情報
・削除してしまったUSBメモリーのデータを復旧・復元する方法 [バッファロー]
(2)バイナリーエディター
[1]HxDをインストール
参考リンク:HxD - Freeware Hex Editor and Disk Editor

[2]HxDにて対象ディスクを開いて読み込み

[3]該当部分※を検索
※今回おかしくなったのは「PC98-EM」なのでこの文字列で検索

[4]ディレクトリ構造体のアトリビュートが「0x00」の無属性ファイルとなっているところを「0x10」ディレクトリに書き換えて上書き保存しました。

参考情報
・FATファイルシステムのしくみと操作法 [ChaNさん]
FATの属性を書き換えるのはDisk Probeを使う方法と同じです。
・TIPSその5 「フォルダがファイルになってしまったときの修復方法」 [PCなんでも屋さん]
Disk Probeを使う方法が解説されています。
[5]エクスプローラーでこのドライブのファイルになっていた「PC98-EM」がフォルダとして見えるようになったのを確認
(3)、(4)
とりあえずアクセスできるうちにエクスプローラーで別のドライブへコピー
(5)
[1]スキャンと修復を実行
[2]現象の再現を確認
[3]再現したことからUSBメモリーに記録されているデータが壊れていると判断
(6)
[1]フォーマットのメニューを開く
[2]クイックフォーマットのチェックボックスを外す
[3]フォーマットの実行
[4]終了確認
(7)
[1]別ドライブにコピーしておいたフォルダ・ファイルをUSBメモリーにコピー
[2]フォルダ数、ファイル数と使用容量を確認
(8)
[1]スキャンと修復を実行
[2]スキャンでエラーの無いことを確認
こういうトラブルがあると新しいUSBメモリーの方がいいかなと思います。今回の時間と労力があればUSBメモリーも値上がりしたとはいえ十分購入できる価格です。USBメモリーは特に破損、紛失しやすい媒体なので今回は復活出来ましたが複数媒体へのバックアップを常にしないと危ないなと思い知らされました。
4.終わりに
ディスクのローレベルアクセスといった技術は古くからありますが、私が実際に直すために駆使したのは10数年ぶりです。エラーになっているときは、自動修復は期待できない、さらに悪化しがちという実態は年数が経っても変わらないと感じました。
一度深く学んだ技術は再び使おうとしたときにすぐにできるようになったので1日で自己解決できてよかったです。
最後はバイナリエディターで正しいと考えた値に自分で直すのが確実でした。
特選街情報 NX-Station
ナビ得 PC