У меня есть внешний USB-диск с файловой системой NTFS.
Если я удаляю файл из Windows и запускаю одну из нескольких «восстановленных» утилит (скажем, TestDisk), я могу легко восстановить файл (потому что «он все еще там, но помечен как удаленный»).
Если я удаляю файл из Linux, никакая утилита (если я не использую сигнатуру с глубоким поиском) не сможет восстановить файл. Почему? Как unlink реализован в коде файловой системы NTFS Linux? Похоже, что он не просто «помечает его как удаленный», но стирает некоторую структуру на диске, так ли это?
Ответы:
Из любопытства я взглянул на источник ntfs3g.
Кажется, есть
ntfs_delete(...)
определенная функцияdir.c
, которая выполняет удаление.Он определенно удаляет все метаданные удаленного файла / каталога из структур файловой системы.
Поскольку исходный код для собственной версии Microsoft недоступен, я могу лишь попытаться сделать обоснованное предположение, как она выполняет удаление.
Похоже, что Microsoft помечает только запись MFT как неиспользуемую, поскольку утилиты восстановления могут восстановить местоположение и имя удаленного файла.
источник
Я не знаю особенностей Windows и NTFS, но общий способ сделать это в графическом интерфейсе файлового менеджера Unix / Linux и Mac OS X Finder состоит в том, чтобы фактически не удалять файл, а перемещать его в специальную скрытую папку с именем Trash (или аналогичный). Команда undelete возвращает файл из этой папки.
rm
просто удаляет файл, не беспокоясь о папках корзины, по запросу пользователя.источник