Windowsには、要らなくなったデータを一時的に保存している「ごみ箱」という場所があります。
ファイルやフォルダに対して「削除」をすると、一時的に「ごみ箱」へ移動されます。本当のデータの削除をしたい場合は、このごみ箱を「空」にする必要があります。その前であれば、データは元の場所へ復元可能です。言い換えれば、ごみ箱という「フォルダ」の中に入れているだけなので、復元も容易なのです。
では、その「フォルダ」とやらはどこにあるのでしょうか。普段、デスクトップでしか見かけない「ごみ箱」の本体はどこにあるのでしょう。
今回は、このごみ箱の正体を暴いてみる記事です。気になる方はどうぞお付き合いください。ついでにごみ箱の設定、例えば上限容量などの変更方法も一緒に解説します。
ごみ箱とは
Windowsにおける「ごみ箱」は、ファイル管理機能のひとつとして提供されています。
ディスク上で不要となったデータを削除すると、標準でこのごみ箱へ一時的に保存されます。
これは、ただ単に「ごみ箱」というフォルダへ入れているだけなので、「元に戻す」を実行すればファイルを復元することが可能です。「ごみ箱を空にする」機能を実行すると、データはコンピューターから完全に削除されます。この機能を実行すると、復元は容易にできなくなりますので注意。
「元に戻す」を実行すると、削除した場所へ復元されます。復元場所を変えたい場合は、ごみ箱の中で復元したいデータを選択し、ドラック&ドロップにて移動・復元させることで可能になります。また、ディスク上から削除を実行した直後に「Ctrl」+「Z」キーを同時押しすることで動作をひとつ戻し削除をキャンセルさせることができます。
ごみ箱の本体
設定
Windowsのごみ箱は「$Recycle.Bin」という特殊なフォルダが本体になります。
(※XPでは「Recycled」という名前ですが、今回の記事ではWindows Visa以降のOSで解説します)
このフォルダはシステムによって厳重に保護されており、通常のファイル権限では見ることもできません。
そこで、下記の操作をして、実際に見えるようにしてみます。(Windows8の場合です)
- エクスプローラーを開き、左上のメニューから「表示」→「オプション」を選択します。
(※エクスプローラーがよくわからない場合は、何でも良いのでフォルダなどを開けばOKです。開いた時に表示される画面がエクスプローラーになります。) - 「フォルダー オプション」が開いたら、「表示」タブを選び [詳細設定] にある
- 「隠しファイル、隠しフォルダー、および隠しドライブを表示する」にチェック
- 「保護されたオペレーティング システム ファイルを表示しない」のチェックを外す
Windows Vistaや7の場合は「整理」→「フォルダーと検索のオプション」を選びます。その後の操作は同じです。
「保護されたオペレーティング システム ファイルを表示しない」のチェックを外そうとすると、管理者権限を要求されます。それだけ重要な項目なので、用事が済んだら設定を戻しましょう。
実際に見てみる
以上の設定をしたら、Cドライブに行ってみましょう。
すると、隠しフォルダとして「$Recycle.Bin」が見えるようになります。これにアクセスしてみましょう。
ごみ箱というフォルダがあることが分かりました。これにアクセスするといつものごみ箱へアクセスできます。
この「$Recycle.Bin」というフォルダですが、Cドライブだけにあるわけではありません。
「$Recycle.Bin」は、各ドライブすべてに生成されます。同じくDやEドライブなどにもアクセスしてみてください。
このように、「$Recycle.Bin」というフォルダは各ドライブに自動生成されます。
データに対して削除を実行すると、削除したデータが保存されているドライブにある「$Recycle.Bin」へ移動されます。例えば、Dドライブにあるデータを削除すると、Dドライブにある「$Recycle.Bin」へ移動されます。削除やごみ箱からの復元が時間もかからず可能になっているのは、このようにドライブ間の移動がないからです。
ごみ箱は仮想的なフォルダ
ごみ箱というフォルダは仮想的なものです。各ドライブ内に保存されている「$Recycle.Bin」の中身を一括で読み込みまとめているのがデスクトップ上にある「ごみ箱」なのです。
▲それぞれのドライブの「$Recycle.Bin」に削除されたデータが保存されています。OSが提供する「ごみ箱」という機能は、それぞれの「$Recycle.Bin」をまとめあげる役割を持っています。ごみ箱という実体のあるフォルダはなく、あくまで仮想的なものなのです。(コントロールパネルなども同じく仮想的なものです)
USBフラッシュメモリやSDカードには「$Recycle.Bin」が生成されない
USBフラッシュメモリなどの記憶デバイスは、その中で削除を実行しようとるすと「完全に削除しますか」と聞かれます。ごみ箱にはいかず、完全削除のみ可能となっています。これは、「$Recycle.Bin」が自動生成されないからです。
そのため、USBフラッシュメモリなどに入っているデータの削除には十分気をつけてください。
「S-1-~」というフォルダは何?
他のユーザーが利用しているごみ箱データです。通常権限ではアクセスすらできないフォルダです。
やりようによってはもちろん確認することはできますが、アクセス権を奪取するともとの状態に戻せなかったりするのであまり無闇に弄らないよう注意してください。
実験
本当にドライブごとにデータが保存されているのかを確認してみます。
-
まず、Dドライブにある「テスト.zip」を作成します。大体50MBくらいです。
これを「削除」します。これでDドライブ内にある「$Recycle.Bin」へ移動されたはずです。 -
ごみ箱という仮想的なフォルダには、CドライブでもDドライブでもすべてがまとめられ表示されているため、どちらでも「テスト.zip」が表示されます。(desktop.iniがCLSIDを指定しているため)
それでは確認しようがないので、Dドライブにあるごみ箱($Recycle.Bin内の「ごみ箱」)を「コピー」します。
それを「貼り付け」します。その際、「desktop.ini」の上書きを確認されます。上書きすると面倒なことになることもあるので、ここは「スキップ」を選びましょう。これでフォルダの認識を「ごみ箱」から「普通のフォルダ」へ変えさせることができます。 -
「普通のフォルダ」として認識されているので、このままアクセスしてみます。すると、名前が変わっていますが先ほど削除されたzipファイルがそのまま保存されていることが確認できます。
-
次に、Cドライブの$Recycle.Binにあるごみ箱を、同じ操作でコピーと貼り付けします。
そしてアクセスしてみましょう。フォルダ構成の設定ファイルである「desktop.ini」しかなく、削除したzipファイルは確認できません。これで、削除したデータはデータのあったドライブ内にある「$Recycle.Bin」へ保存されることが分かりました。
ごみ箱の設定
ごみ箱には、保存容量の上限などを設定させることができます。
ごみ箱を右クリックして「プロパティ」を選択します。すると、「ごみ箱のプロパティ」が開きます。ここで、「$Recycle.Bin」が生成されているドライブと空き容量が確認できます。「カスタムサイズ」を調整することでごみ箱の上限を決めることができます。
因みに、ごみ箱へ移動させずその場でデータの完全削除を実行したい場合は「ごみ箱へにファイルを移動しないで、削除と同時にファイルを消去する」にチェックをいれます。
まとめ
いかがでしたか。いつも利用しているごみ箱、どのような仕組みになっているかお分かりになったでしょうか。
ごみ箱という実体のあるフォルダ(正確に言えばディレクトリ)はなく、あくまで仮想的なOSの"機能"のひとつに過ぎないことがお分かりになったでしょうか。ごみ箱は各ドライブに自動生成される「$Recycle.Bin」の中身をまとめる役割を持ち、不要なデータを管理しています。
各ドライブに作成されるので、削除によるドライブ間のデータ移動がなく、削除も復元も時間がかからず完了させることができるようになっています。
豆知識的なものであまり実践的なものではないですが、何かの為になれば幸いです。
1 エクスプローラーを開き、メニューから「表示」→「オプション」を選択します
ごみ箱のことで質問する人にエクスプローラーがどこにあるかわかるはずがない。
コメントありがとうございます。
この記事を書いていたときの私が予想していた読者ですが、manukeさんとは逆でこの質問ができる人は
パソコンのことを少し知っている中級者くらいの方々だと思っていました。操作内容もエクスプローラーという言葉を知らない
方からみれば高度なことをやっているので、記事の長さも考えてあえて説明することはしていませんでした。
ただ、折角ご指摘していただいたので一言ではありますが少し解説文を挿入してみました。
また何かお気付きの箇所がございましたらコメント下さい。
$Recycle.Binがフォルダーなら同じ名前をもつファイルを同時に格納できる仕組みを説明して欲しい。
コメントありがとうございます。
Windowにおいてはフォルダーという言葉はかなり広い意味を持っているようで、
実体がなくても仮想的な入れ物というだけでもフォルダーという言い方をすることができます。
必ず実体がある「ディレクトリ」とはまた少し違います。
フォルダーという言い方をしていますが、特にWindowsシステムの一部である「ゴミ箱」は
かなり特殊なものであるという認識も必要です。
ゴミ箱内には確かに同じ名前のデータを入れることができます。
ただ、この「ゴミ箱」というフォルダーは仮想的なもので実体はありません。
一番簡単な説明ですが、要は「ファイル名だけを一覧表示しているだけ」と
思っていただければ大体合っています。
Excelでも、同じブック内には同じ名前のセルがあっても大丈夫ですよね。
「Excelでファイル名の一覧を作って表示しています」という状態です。
これが一番簡単な説明になります。
もっと詳しくとなると少し難しい話になりますが・・・
まず削除を行うと、そのドライブ内のRecyclerフォルダに移動されますが、
その際にファイル(フォルダ)の名前は一度リネームされます。
同じ名前のファイルを削除してもリネーム後の名前は違うものが割り当てられるので、
個別に管理できるようになります。
そして、リネーム前のファイルと関連付けできるよう、バイナリデータにそれら情報を格納します。
Vista以降は「削除したデータは$R~で始まるランダムなファイル名にリネーム」され、
それと対応するように「$I~ で始まるバイナリファイル」を同じところに生成します。
因みに、拡張子はそのままです。
この記事でも、削除したファイルが2つにわかれていますよね。
本記事の「実験」の「手順3」の画像をみていただければわかりますが、
下が削除した元のデータ、上がバイナリデータです。
このバイナリデータには元のファイルの名前の他に、削除した日時やファイルパスなどが
記録されています。なので、このバイナリデータを元にすれば復元が可能になるわけです。
一連の流れですが、
・データを削除すると、同ドライブ内のRecyclerに移動される。
・ファイル名が重複しないように名前が変更される。
・変更前の状態に戻せるよう、バイナリデータも一緒に作る。
・復元の際は、バイナリデータを参照して復元する。
という感じです。ゴミ箱という仮想フォルダ上では同じ名前のものが
入っているように見えますが、「実体」は重複しない別の名前が利用されています。
なので同名のファイル名のものを入れることができます。
バイナリデータなどを使えばファイル名の一覧を表示できます。それがゴミ箱です。
ゴミ箱フォルダーなんて言っていますが、ゴミ箱という機能を提供している「プログラム」
のような感じです。Windowsのファイルシステムなどと密接に連携をとって動いています。
日本語ではMicrosoftのサイトに「古いOS」での動作は記載があります。
◯ごみ箱がファイルを格納する方法
https://support.microsoft.com/ja-jp/kb/136517#appliesto
Vista以降は命名規則などが変わっています。INFOファイルもありません。
Vista以降のゴミ箱の動作はMSの開発者向け質問フォーラムに質問があります。
◯Windows7 で ゴミ箱へ移動したファイルの情報を格納しているファイルについて
https://social.msdn.microsoft.com/Forums/windows/ja-JP/1717f21d-4007-4e1b-9b97-aa81b9dc1902/windows7-?forum=windowsgeneraldevelopmentissuesja
大体この2つのサイトでゴミ箱の動作はおおまかに分かるかと思います。
参考になりましたら幸いです。
丁寧な回答ありがとうございます。
そういう仕組みだったんですね。
DOS の頃はファイルの仮想化(con や prn など)でしたが、
いってみればフォルダーの仮想化のようなものなんですね。
ん?ちょっと違うか。
重ねてになりますが、ありがとうございます。