web-dev-qa-db-ja.com

rmコマンドを発行すると、ファイルはどこに行きますか?

最近、誤って一連のファイルに対してrmを実行しましたが、これらのファイルがどこにあるのか正確に考えてしまいましたか?

つまり、GUIで作業する場合、削除されたファイルはゴミ箱に移動します。 rmに相当するものは何ですか?rmコマンドを元に戻す方法はありますか?

108
boehj

消えた場所はどこにもありません。より具体的には、ファイルのリンクが解除されます。データはまだディスク上にありますが、データへのリンクは削除されています。以前はデータを取得することが可能でしたが、現在ではメタデータがクリアされており、回復可能なものはありません。

rmのゴミ箱はありません。ゴミ箱が必要な場合は、より高レベルのインターフェースを使用する必要があります。 Ubuntuのtrash-cliにはコマンドラインユーティリティがありますが、ほとんどの場合、NautilusやDolphinなどのGUIファイルマネージャを使用して、標準のゴミ箱を提供します。ゴミ箱はそれ自体が標準です。 Dolphinでゴミ箱に移動したファイルは、Nautilusのゴミ箱に表示されます。

ファイルは通常、ゴミ箱に移動すると~/.local/share/Trash/files/などの場所に移動されます。 UNIX/Linuxのrmコマンドは、DOS/Windowsのdelに相当します。これは、ファイルを削除してnotを実行してごみ箱に移動します。理解すべきもう1つのことは、ハードディスクドライブからUSBディスクなどのファイルシステム間でファイルを移動することは、実際には1)ファイルデータのコピーの後に2)元のファイルのリンクを解除することです。ごみ箱をこれらの余分なコピーでいっぱいにしたくないでしょう。

126
penguin359

Ext3/ext4の場合は、 extundelete または ext3grep などのツールを使用してファイルを復元するか、低レベルの構造で messing に移動することもできます- 手動 (気弱な人向けではありません);多くのファイルシステムでは、特定のパターンでまだ上書きされていないブロックを検索してみることができます(例: magicrescue はJPEGヘッダーを検索できます)。これらは残されたメタデータからファイルを回復するためにヒューリスティックを使用しているため、完全な回復は保証されないことに注意してください-これはラストチャンスベットです(ファイルのいくつかのトレースがジャーナルに残っている必要があり、ブロックがまだ上書きされていません)。

したがって、すべての意図と目的のために、rmで削除されたファイルはなくなりました-これらのツールが提供するようなネクロマンシーを試行できますが、それに依存しない:これらは、他のすべてが失敗したときに試すツールです。最新のバックアップを掘り下げてください(バックアップを作成していますか?ええと、ライブで学習します...)。

rmの影響の取り消しについて:

ほとんどのファイルシステムはデータへの参照を削除し、ブロックがフリーであることを示すだけなので、デバイスから直接データを読み取って検索することができます。少し運がよければ、あなたのファイルを含むブロックは他のもののために要求されていません。

これはあなたが探しているかなりユニークなものを持っていると仮定します、あなたはシステムにrootを持っています、そして私が複数のファイルシステムブロック(おそらく4k)にまたがる何かをつなぎ合わせると結局かなり面倒になるかもしれないと思いますファイルシステムは、ファイルを連続したブロックに配置できませんでした。

ファイルシステムが存在するデバイスで文字列を実行し、grepを使用して大きなコンテキスト(-C)。 (そしてその事件の直後、会社はバックアップの実装にいくつかのリソースを費やすことを決定しました)

8

rmコマンドを使用してファイルを削除しても、ファイルのデータは削除されません。つまり、データを含むファイルシステム内のブロックはまだ存在しています。

rmコマンドを実行すると、システムはそのファイルに属するiノードを未使用としてマークし、そのファイルのデータブロックも未使用としてマークします(ただし、消去されません)。しかしながら ext3ファイルが削除されると、iノードのほとんどのフィールドがゼロになります。

この未使用の通常のマーキングは、速度を上げるために行われます。それ以外の場合、削除の場合はさらに時間がかかります。そのため、大きなファイルでも削除する方が速いことに気付いたかもしれません(データブロックが上書きされない場合は、データを回復できます)。

詳細: Inode構造ファイル削除のしくみ

6
sarath

Unixスタイルのファイルシステム(Linuxを含む)では、ファイルは実際には特定の場所に「ある」わけではありません。代わりに、システムはハードリンクを使用して、データの大きな塊に相当する部分を指し示します。したがって、ファイルを作成すると、最初のハードリンクも作成されます。これは、実際にファイルを「保存」した場所にあるハードリンクです。さらにハードリンクを作成すると、システムが知る限り、ファイルは実際には一度に複数の場所に存在します。

ファイルを「削除」すると、通常、実際には指定した場所に存在していたハードリンクのみが削除されます。これが、ファイルを削除するシステムコールがunlink()と呼ばれる理由です。システムは、ファイルへのハードリンクがなくなるまで、実際にはファイルを削除しません。しかし、最後のハードリンクが破壊されると、データも破壊されます。

では、削除したファイルはどこに行くのですか?まだハードリンクがある場合、それらのファイルは、削除しなかったハードリンクがある場所にあります。ハードリンクが残っていない場合、ファイルは失われます。

3
The Spooniest

最近ファイルが削除された場合は、〜/ .snapshotも確認してください。

0
Andy