Intereting Posts
Как пропустить первый аргумент в скрипте Как прокручивать экран или буфер tmux без приостановки приложения? Как переключиться на root и использовать те же точечные файлы, что и мой обычный пользователь? Есть ли способ предотвратить выполнение процесса, не связанного с терминалом, «кто» внутри моего .envfile? Как легко проверить оповещение по электронной почте munin? Интернет-синхронизируемое время через Интернет через 44 часа после закрытия крышки Завершите выполнение табуляции, предлагая «messagebus» Почему переменное расширение без $ работает в выражениях? Могут ли изменения системы слишком часто наносить вред компьютеру Проблемы с отображением 3D-контента на видеокарте Nvidia в Ubuntu 18.04 Где находится файл конфигурации по умолчанию для принтера по умолчанию? Второе поле в / etc / shadow Настройка PDF-документа CUPS для вывода PDF / A? Как настроить централизованные домашние каталоги и аутентификацию пользователей с помощью LDAP и NFS? Использование awk для печати количества файлов, указанных в командной строке

Как «rm» в файловой системе NTFS отличается от собственной реализации Windows?

У меня есть внешний USB-диск с файловой системой NTFS.

Если я удалю файл из Windows, и я запустил одну из нескольких «восстанавливающих» утилит (скажем, TestDisk), я могу легко восстановить файл (потому что «он все еще там, но он помечен как удаленный»).

Если я удалю файл из Linux, то никакая утилита (если только я не использую подписи с глубоким поиском) может восстановить файл. Зачем? Как unlink реализован в коде файловой системы NTFS Linux? Похоже, что это не просто «пометить его как удаленный», но он уничтожит некоторую структуру на диске, так ли это?

Я искал источник ntfs3g из любопытства.

Кажется, существует функция ntfs_delete(...) определенная в dir.c , которая делает удаление.

Он определенно удаляет все метаданные удаленных файлов / каталогов из структур файловой системы.

Поскольку исходный код для собственной версии Microsoft недоступен, я могу только попытаться сделать обоснованное предположение о том, как он выполняет удаление.

Похоже, что Microsoft только отмечает запись MFT как неиспользованную, так как утилиты undelete могут восстановить местоположение и имя удаленного файла.

Я не знаю особенностей Windows и NTFS, но общий способ сделать это в GUI-файлах Unix / Linux и Mac OS X Finder – фактически не удалять файл, а переместить его в специальную скрытую папку с именем Trash (или аналогичный). команда undelete извлекает файл из этой корзины.

rm просто удаляет файл, не беспокоясь о папках Trash, как того требует пользователь.