Я хочу понять, почему объекты в корзине не нужно переименовывать, когда два или более объектов имеют одинаковое имя. В других местах два объекта не могут иметь одинаковое имя: мы вынуждены переименовать их.
1 ответ
В отличие от @tikend, файлы не сохраняются по старому пути и просто помечаются как удаленные. Вместо этого файлы перемещаются в $Recycle.Bin
в корне диска. Внутри есть папки с именами типа S-1-5-21-4284498480-1431815607-1764836822-1001
(фактический пример)*, а внутри находятся удаленные файлы.
Почему мы можем иметь два файла с одинаковым именем в корзине? Потому что их имена покалечены. Вместо sumthinFunny.cpp
у нас есть $RYDITY2.cpp
. Эти идентификаторы позволяют иметь два файла с одинаковым именем.
Как Widows узнает, откуда был удален файл? Он хранит метаданные файла (например, рассматриваемый путь, атрибуты файла и т.д.) В файле $IYDITY2.cpp
. Внутри есть путь к исходному каталогу.
Кстати, если вы откроете $Recycle.Bin
из проводника Windows выглядит пустой. Вы можете увидеть это, если подключите диск из Linux или через другой файловый менеджер, например Total Commander.
Кстати: хотя имена файлов переносятся в форму, похожую на $ RYDITY2.cpp, при открытии их свойств вы получаете нечто, похожее на UUID:
* Это имя папки - SID пользователя, который удалил файл.
Отредактированный, чтобы принести мудрость комментариев здесь.