回答:
消えたところはどこにもありません。より具体的には、ファイルはリンク解除されます。データはまだディスク上にありますが、そのリンクは削除されます。以前はデータを取得することが可能でしたが、今日ではメタデータがクリアされ、何も回復できません。
のゴミ箱rm
はありません。ごみ箱が必要な場合は、より高レベルのインターフェイスを使用する必要があります。trash-cli
Ubuntuにはコマンドラインユーティリティがありますが、ほとんどの場合、NautilusやDolphinなどのGUIファイルマネージャーを使用して標準のゴミ箱を提供しています。ゴミ箱自体が標準です。Dolphinでゴミ箱に移動したファイルは、Nautilusのゴミ箱に表示されます。
ファイルは通常~/.local/share/Trash/files/
、ごみ箱のような場所に移動されます。rm
UNIX / Linux のコマンドは、ファイルをdel
削除してごみ箱に移動しない DOS / Windows のコマンドと同等です。実現すべきもう1つのことは、ファイルをハードディスクドライブからUSBディスクなどのファイルシステムに移動することは、実際には1)ファイルデータのコピーと2)元のファイルのリンク解除です。これらの余分なコピーでゴミ箱をいっぱいにしたくないでしょう。
libtrash
rmの動作を変更するようなものを使用する場合は注意が必要です。多くのスクリプトはrm
ファイルをクリーンアップするために使用しますが、それらをゴミ箱に表示したくない場合があります。私のような専用のコマンドを使用することをお勧めしますtrash
からtrash-cli
パッケージ。@pedroホームディレクトリにファイル*を作成したことを追加する必要があります。作成すべきではないときに誤って引用していたので、実際にrmで削除することにしました。自分のやっていることに気付いたとき、私はすぐにコマンドを殺しましたが、すでにホームディレクトリのいくつかのファイルを削除していました。
cp
、そしてmv
、にcp -i
し、mv -i
rootとして実行している場合。これにより、デフォルトの動作が変更され、既存のファイルを上書きする前にこれらのコマンドが常に確認するようになります。一部のシステム管理者は、これらのエイリアスを特に削除して、デフォルトの動作に従う別のシステムで致命的な動作を期待しないようにすることを推奨しています。
EXT3 / ext4のために、あなたは次のようなツールを使用してファイル復元しようとすることができextundeleteまたはext3grepを行くとしても、あるいはいじり低レベルの構造を手動で(ない心臓の弱いため)。多くのファイルシステムでは、特定のパターンでまだ上書きされていないブロックを検索することができます(たとえば、magicrescueはJPEGヘッダーなどを検索できます)。これらは、残されたメタデータからファイルを回復するためにヒューリスティックを使用しているため、完全な回復は保証されないことに注意してください-それは、最後のチャンスの賭けです(ファイルのいくつかのトレースがジャーナルに残っていること、まだ上書きされていません)。
したがって、すべての意図と目的で、削除されたファイルrm
はなくなります- これらのツールが提供するような壊死を試すことができますが、それに依存しないでください:これらは他のすべてが失敗したときに試すツールです。最新のバックアップを掘り下げてください(バックアップを作成してきましたか?そうですね、実際に学習してください...)。
の効果の取り消しについてrm
:
ほとんどのファイルシステムはデータへの参照のみを削除し、ブロックがフリーであることを示すため、デバイスから直接読み取っているデータを見つけようとすることができます。少し運が良ければ、あなたのファイルを含むブロックは他のものを要求されていません。
これは、あなたがroot
システム上に持っているかなりユニークなものを持っていることを前提とし、ファイルシステムが管理していなかった場合、複数のファイルシステムブロック(おそらく4k)にまたがるものをつなぎ合わせるとかなり面倒になる可能性があると推測していますファイルを連続したブロックに配置します。
ファイルシステムが存在するデバイスで文字列を実行grep
し、大きなコンテキスト(-C
)でそれらのファイルから何かを探して使用することで、いくつかのプレーンテキストファイルのコンテンツを正常に回復しました。(そして、その事件の直後に、会社はバックアップの実装にいくつかのリソースを使うことに決めました)
magicrescue
、そのような独特のパターンで画像や音を見つけようとするようなツールがあります。
rm
コマンドを使用してファイルを削除するたびに、ファイルのデータは削除されません。つまり、データを含むファイルシステム内のブロックはまだ存在しています。
rm
コマンドを実行すると、システムはそのファイルに属するiノードを未使用としてマークし、そのファイルのデータブロックも未使用としてマークされます(ただし、消去されません)。ただしext3
、ファイルが削除されると、iノードのほとんどのフィールドがゼロになります。
この未使用の通常のマーキングは、速度のために行われます。そのため、大きなファイルを削除する方が速いことに気づいたかもしれません(データブロックが上書きされていない場合は、データを回復できます)。
詳細:iノード構造、ファイル削除の仕組み
chattr +s
( "shred")属性でマークされていない限り。削除時にゼロでこのファイルを明確に上書きするようにファイルシステムに指示します。一部のファイルシステムのみがその属性をサポートします。
Unixスタイルのファイルシステム(Linuxを含む)では、ファイルは実際には特定の場所に「ある」わけではありません。代わりに、システムはハードリンクを使用して、データの大きな塊になる部分を指し示します。そのため、ファイルを作成するときに、最初のハードリンクも作成します。これは、ファイルを「保存」した場所に実際に存在するものです。さらにハードリンクを作成すると、システムが知る限り、ファイルは実際には一度に複数の場所に存在します。
ファイルを「削除」すると、通常、実際に指定した場所に存在していたハードリンクのみが削除されます。これが、ファイルを削除するシステムコールが呼び出される理由unlink()
です。ハードリンクがなくなるまで、システムは実際にファイルを削除しません。しかし、最後のハードリンクが破壊されると、データも破壊されます。
だから、あなたが削除したファイルはどこに行くのですか?ハードリンクがまだある場合、それらのファイルは、削除しなかったハードリンクがある場所にあります。ハードリンクが残っていない場合、ファイルはなくなります。