2019年2月10日日曜日

FreeBSD-11.2で消してしまったファイルを復元できなかった件

FreeBSD-11.2で、誤ってrmしてしまったファイルを復元できなかった。

rmしてしまって以降、該当ファイルシステムには変更を加えていないので、たぶん復元できるはずといろいろ試したが、どうも最近はファイルを削除するとiノードをクリアするようで、データブロックが行方不明になってしまい復元不可能のようだ。

最初はパッケージのffs2recovを試したのだが、レギュラーファイルの一覧を出す-aが想定どうりに機能せず断念。ディレクトリ一覧を表示する-dはそれらしく動いたのだが。

次にfsdb。該当ファイルシステムをread onlyでマウントして、ファイルがあったディレクトリのiノード番号を確認。ディレクトリを16進ダンプすると、消してしまったファイルのiノード番号が確認できた。

fsdbでブロックデバイスを開いて、消してしまったファイルのiノードを選択するとUnallocatedとなるが、chtype fileとするとiノード情報が見えるようになる。サイズが0になっているのでblocksしてもデータブロック番号が見えない。さらにchlen <適当なサイズ>(このコマンドはmanに記載が無い)すると見えるようになるが、ブロック番号は0が並んでいるという結末だった。

iノードがクリアされていなければ、fsdbからディレクトリにlnして復活できそうだったのだが。残念。。。