「ゴミ箱」についての勉強メモ

ドヤ顔で語っていきたかったのですが、
如何せん「ゴミ箱の仕組み」についての情報が少なく、
調査に苦戦中です。。。
正確な内容を心掛けてはいますが、
ズレた内容も含んでいるかも?くらいの気持ちで眺めていただきたいです。

というわけで、
今回は「ゴミ箱の仕組みをなるだけ深く掘り下げる」というテーマで、
今のところ掘り進められた内容を書き記しておきます。

ゴミ箱とは?

厳密に言うと、フォルダです。
通常のフォルダとは違い独自の機能を持った特別なフォルダです。
$Recycle.Bin」という隠しフォルダが実体で、
通常はCドライブ直下やユーザフォルダ配下にあるようです。

ファイルを削除すると「$Recycle.Bin」に移動し、
完全に削除をすると「$Recycle.Bin」からも削除されます。
「Shift」+「Delete」等で、「$Recycle.Bin」を経由せずに完全削除することもできます。

ただし、ゴミ箱に移動できるのは内蔵ストレージのファイルのみで、
USBメモリや外付けハードディスクなどのファイルは
削除する場合は完全削除しかできません。
どうしてもゴミ箱に入れたい場合はCドライブ配下などに一度保存した上で
保存したファイルを削除する必要があります。
(穴を掘って埋めるような内容ですが。。。)
どうしてゴミ箱に入らないの?と思うかもしれませんが、
それは次の内容を知ると納得できるかと思います。

ファイルの削除の仕組み

先ほど、ファイルを削除するとゴミ箱に移動すると説明しました。
ここで注意すべきなのは、
ファイルのデータの物理的な位置は変わらない
ということです。
HDDやSSDの適当な場所に指を指すと、
きっとそこには様々なデータが何かしら格納されています。
そういう意味での「物理的な位置」です。

WindowsPCのほとんどはNTFS(New Technology File System)という
ファイルを管理するためのシステムを使用しています。
その中で中心的な役割を持つテーブルMFT(Master File Table)
ファイルの様々な情報が格納されています。

ファイルを削除すると、
MFTではそのファイルのデータに対して、
削除済かどうか、どのフォルダにあるかの情報を更新します。
つまり、ファイルのデータそのものには触れないため、
データの物理的な位置は変わらないわけです。
また、削除しただけではデータ容量は減らないこともここから分かりますね。

このNTFSはあくまで内蔵ストレージ内のファイルを管理してくれるものですので、
外付けメモリのファイルがどうなろうと知ったこっちゃありません。
だからゴミ箱には入れられず、完全削除しかできないのですね。

まとめ

NTFSについてはもう少し調べてみようと思います。
削除した時にMFTがどう変更されるのかを見てみたいです。
(簡単に見られるかは分かりませんが。。。)
根っこの知識過ぎて役に立つかは怪しいですが、
NTFS編をお楽しみに!