Unlocker にジャンクションの中身を消されてしまった

事の経緯。

  1. CygwinPython を入れたくなった
  2. Cygwin の setup.exe を起動すると、setup.exe が古いと言われた
  3. 最新版をダウンロードしたが、既にインストールしている環境が邪魔っぽい
  4. 現在のCygwin をすべて削除すべく Cygwin フォルダを Shift + Delete
  5. Explorer.exe がロックして削除できないと Unlocker が教えてくれる
  6. Unlocker でロックを解除しつつ Unlocker で削除

僕は /home 以下は linkd を使用してジャンクションにしている。
実体は My Documents にある。

通常の削除であれば、ジャンクションが削除されるだけなので、実体は削除されないんだけど、Unlocker の削除プロセスは、ジャンクションを判別せずに、ジャンクションの中まで入ってすべてを再帰的に削除してしまう仕様のようだ。というか、僕にはバグのように思える。

例えば Unix

rm -rf foo

と打ち込んで、foo の中にシンボリックリンクがあったら、その中身まで消されてしまう、だとたまんないですよね。

Unlocker の作者には、現象をメールで報告しておいた。覚えておきたいのは、エクスプローラの削除と Unlocker の削除は仕様が異なる、ということ。




さて、とりあえずやることは、ファイルの復旧。

フリーでファイルを復旧できるソフトがあるのは、本当にありがたいものです。

試してみたのは以下の三つ。すべて窓の杜収録ソフト。

DataRecovery v2.6.4

ドライブを選択してスキャンしたところでエラーが出て、VS2005 でデバッグしますか、というダイアログが出たので使用を中止。

Glary Undelete v1.5.0.232

使用するのにインストールが必要なので使用中止。削除した領域に上書きされてしまうかもしれないので。

Pandora Recovery v2.0.1

最終的にこれを使用して、すべてのファイルを復元できた!!!

よかったところは

  • 実行ファイル単体で実行できるので、サルベージ対象の PC の HDD を汚染しない
  • 間違えて C ドライブから C ドライブに復元しようとした時に、別の HDD を選択しないと上書きされる可能性がある、と指摘してくれた点

という感じ。

C ドライブすべてをスキャンするので非常に時間がかかるのと、スキャン後に表示されるリストが膨大で、並べ替えだけでもとても時間がかかるのと、あくまでもファイルとして復元するので、元のフォルダ構成は自分で手作業で作り直さなければならないなどあり、復旧にはとてもとても時間がかかったけど、何とか一息つけた。

上図は復旧に成功したところ。
これをフォルダの数だけ繰り返す。ふぅ。