実行してしまった新規事業部の高田です。この記事は、私が業務中に体験した血の気が引く失敗とその顛末を、弊社の金曜のお昼に開かれているランチタイム勉強会でお話したところエンジニアだけにウケたので、「よーし、世間のウケも取りに行っちゃうぞー」と調子に乗って下心まる出しで焼き直しネタをお送りする予定です。ランチライム勉強会とは弊社では有志が集まって毎週金曜日のお昼にランチライム勉強会というものを開催しています。勉強会とは言え、各支社をテレビ会議システムでつなぎながらご飯を集まって食べつつ、ゆるーいネタを発表しあうような場です。大きなマサカリは飛んでこないので、気軽に発表の練習が出来る場でもあります。実行した場合のお話です。日常的に使っている人なら、ファイルを捨てたらゴミ箱にあるという認識があるんじゃないでしょうか。間違って捨てればそのファイルを拾いに行けばいい、と。ファイルを消すとどこも経由せずに「スッ」とファイルがいなくなります。ゴミ箱にもありません。消してしまって、ゴミ箱を漁ったところで見つかりもしないとしたら、どうでしょうか。公式配信されていないんですよね。そのものをソースからビルドするしかないな」ってなるじゃないですか。コマンドで複写することは可能です。調べれば......?ファイルを消すと、ディレクトリエントリ上ではデータの残骸が残ります。そのエリアに更にデータが上書きされるまでの間は、かろうじて読みだすことが可能です。されてデータがバイバイされることは極めて少ないです。ジャーナリング機能を有しています。ジャーナルログには、inodeとファイル実体の関係をひも付けたデータを持っています。inodeはブロックポインタを指し示しており、このブロックポインタを参照なし(0)に書き換えることでファイルを削除します。これで最新のジャーナルからはファイルが見えなくなるので、消えたように見えるという仕組みです。その逆を行くと良いはずです。ディレクトリエントリを全部舐めます。この時、レコード長を無視して無理やりファイル名を取り出して、そのファイル名からレコード長を逆算してやれば不可視のディレクトリエントリを読むことが出来るはずです。情報が取得できるので、ジャーナルログにおける時間範囲を設定して、その範囲でログを追いかければ、ファイルの実体境界を特定して、ファイルとして取り出すことが可能になる......はず?あくまで、ディレクトリエントリが破壊され、求める時間範囲のジャーナルログが残っている、このロスタイムのような瞬間にだけ許された技......「あっ、でもこんな面倒くさいことしたくないぞ?」extundelete面倒くさいことを自動でやってくれる都合が良いコマンドが存在します。削除していなかったという条件が重なっていたため、救済方法が存在しました。場合、公式リポジトリで該当のコマンドが配信されていました。殺していなかったので、今回はサラッとインストールできました。次に、restore対象のdisk名称を調べます。コマンドとかでいいんじゃないでしょうか。分前まで舐めてみました。フォルダが作成され、その中に起点から現時点までに削除されて、なおかつ復活できそうなファイルが出力されます。復活されるので、目的のファイルが復活されない場合もあります。存在を知らない子も居ますしね)。それでも、ファイルシステムの低レベル制御の原理を知っていればどうにかなることも、世の中にはあります。アカウントでは、フェンリルプロダクトの最新情報などをつぶやいています。