NTFSファイルシステムでの「rm」とWindowsの実装との違いは何ですか?


16

NTFSファイルシステムを搭載した外部USBディスクがあります。

Windowsからファイルを削除し、いくつかの「復元」ユーティリティ(たとえば、TestDisk)の1つを実行すると、ファイルを簡単に復元できます(「まだ存在するが、削除済みとしてマークされているため」)。

Linuxからファイルを削除した場合、(ディープサーチ署名ベースのユーティリティを使用しない限り)ユーティリティはファイルを回復できません。どうして?LinuxのNTFSファイルシステムコードにアンリンクはどのように実装されていますか?「削除済みとしてマークする」だけでなく、ディスク上の構造を一掃するように見えますが、これは事実ですか?


2
@Jay silly_evarlast Wrenおそらくその通りです。サーバーフォールトで試してみます。この動作をテストするために使用したシステムはubuntuであるため、ubuntuに関連する可能性があります。

ntfs-3gのソースコードを調べて、問題について何かがあるかどうかを確認できます。
マーティンUeding

ntfs-3g開発者に質問することも可能かもしれません(NTFSがどのように機能し、どのように実装されているかを知っています)。
JanC

回答:


7

好奇心からntfs3gのソースを見ました。

には、削除を行う関数がntfs_delete(...)定義されているようdir.cです。

削除されたファイル/ディレクトリのメタデータをすべてファイルシステム構造から確実に削除します。

Microsoft独自のバージョンのソースコードは利用できないため、削除を実行する方法を推測するだけです。

元に戻すユーティリティは削除されたファイルの場所と名前を回復できるため、MicrosoftはMFTエントリを未使用としてのみマークしているようです。


3

WindowsとNTFSの特異性はわかりませんが、Unix / LinuxファイルマネージャーGUIとMac OS X Finderでこれを行う一般的な方法は、ファイルを実際に削除せずに、Trash(または同様)。undeleteコマンドは、そのごみ箱フォルダーからファイルを取得します。

rm ユーザーの要求に応じて、ごみ箱フォルダに煩わされることなくファイルを削除します。


おかげで、私はその動作の説明を探していました!
jcora
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.