rmコマンドが発行されると、ファイルはどこに移動しますか?


98

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

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


3
重複する可能性があります。Linuxで元に戻します。しかし、doファイルがどこに行くかは、元に戻す方法があるかどうかとはまったく異なります。
-xenoterracide

回答:


120

消えたところはどこにもありません。より具体的には、ファイルはリンク解除されます。データはまだディスク上にありますが、そのリンクは削除されます。以前はデータを取得することが可能でしたが、今日ではメタデータがクリアされ、何も回復できません。

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

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


4
明確な説明をありがとう。CLIを使用しても構いません。ワイルドカードを使用する場合は、もう少し注意する必要があります。:)
boehj

16
libtrashrmの動作を変更するようなものを使用する場合は注意が必要です。多くのスクリプトはrmファイルをクリーンアップするために使用しますが、それらをゴミ箱に表示したくない場合があります。私のような専用のコマンドを使用することをお勧めしますtrashからtrash-cliパッケージ。@pedroホームディレクトリにファイル*を作成したことを追加する必要があります。作成すべきではないときに誤って引用していたので、実際にrmで削除することにしました。自分のやっていることに気付いたとき、私はすぐにコマンドを殺しましたが、すでにホームディレクトリのいくつかのファイルを削除していました。
ペンギン359

4
シェルにゴミ箱のようなものを置くことは非常にまれなので、ローカルマシンに追加して使い慣れたり、日常の作業で使用したりすることもあります。unix:sの他の99%の一部を使用せずにトラブルを起こす可能性があります
Johan

3
ここでの持ち帰りメッセージは、私がすぐにCLIを停止し、より注意を払う必要があるということだと思います。
boehj

2
@Johanが言ったことと同じラインに沿って、RedHatのは(まだありません?)に使用などのコマンドのエイリアスを設定しcp、そしてmv、にcp -iし、mv -irootとして実行している場合。これにより、デフォルトの動作が変更され、既存のファイルを上書きする前にこれらのコマンドが常に確認するようになります。一部のシステム管理者は、これらのエイリアスを特に削除して、デフォルトの動作に従う別のシステムで致命的な動作を期待しないようにすることを推奨しています。
ペンギン359

11

EXT3 / ext4のために、あなたは次のようなツールを使用してファイル復元しようとすることができextundeleteまたはext3grepを行くとしても、あるいはいじり低レベルの構造を手動で(ない心臓の弱いため)。多くのファイルシステムでは、特定のパターンでまだ上書きされていないブロックを検索することができます(たとえば、magicrescueはJPEGヘッダーなどを検索できます)。これらは、残されたメタデータからファイルを回復するためにヒューリスティックを使用しているため、完全な回復は保証されないことに注意してください-それは、最後のチャンスの賭けです(ファイルのいくつかのトレースがジャーナルに残っていること、まだ上書きされていません)。

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


2
価値の高いテキストデータの場合、いつでも堅牢な汎用ツール(emacsやperlを含む)を使用して、削除されたファイルを含むディスクの「rawデバイス」を調べ、既知の文字列を検索できます。この方法でWordドキュメントを回復しました。マークアップは失われますが、ほとんどのテキストを回復できます。明らかにこれは災害復旧であり、「元に戻す」ではありません。
アレクシス

適切な「手動」リンク:web.archive.org/web/20131221183925/http
//…

8

の効果の取り消しについてrm

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

これは、あなたがrootシステム上に持っているかなりユニークなものを持っていることを前提とし、ファイルシステムが管理していなかった場合、複数のファイルシステムブロック(おそらく4k)にまたがるものをつなぎ合わせるとかなり面倒になる可能性があると推測していますファイルを連続したブロックに配置します。

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


ext3がiノードのブロックポインターをゼロにするなど、少し複雑ですが、はい、ファイルが十分に小さいか、連続したブロックに割り当てられている場合は、ファイルを直接検索することができます。これはファイルカービングと呼ばれることもありmagicrescue、そのような独特のパターンで画像や音を見つけようとするようなツールがあります。
Piskvor

6

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

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

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

詳細:iノード構造ファイル削除の仕組み


...ファイルが明示的にchattr +s( "shred")属性でマークされていない限り。削除時にゼロでこのファイルを明確に上書きするようにファイルシステムに指示します。一部のファイルシステムのみがその属性をサポートします。
telcoM

3

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

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

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


0

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


4
これは、その機能を提供するマジックファイルシステム(NetAppなど)がある場合、または特別なバージョンのrmを使用している場合にのみ機能します。
mattdm
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.