Как iOS удаляет файл технически и может ли он быть потенциально восстановлен?

11

У нас здесь интересное обсуждение удаления файлов на устройствах iOS. Вопрос был: если я удаляю файл с помощью NSFileManager, что происходит под капотом?

Насколько я понимаю, удаление выполняется путем удаления соответствующей записи файла из таблицы файловой системы.

Счетчик аргументов в том, что дескриптор файла остается каким-то образом, и устанавливается только флаг, который помечает файл как удаленный. Если пользователь имеет root-доступ к устройству iOS, он может сбросить этот флаг и восстановить содержимое файла.

В обоих случаях мы согласны с тем, что фактическое содержимое файла не будет перезаписано, а простые флэш-памяти все еще существуют на флэш-памяти / диске, пока блок не будет занят другим файлом.

Идея заключается в следующем: если вторая версия верна, мы могли бы перезаписать файл однобайтовым содержимым перед удалением (даже если этот байт записывается в новое место на флэш-накопителе без фактической перезаписи старого содержимого). Если затем файл восстановлен, доступен только перезаписанный однобайтовый контент.

Обратите внимание, что мы не говорим о судебном анализе флэш-накопителя, который может восстановить исходное содержимое файла.

Итак, резюмируем:

  • Как удаление файла на iOS работает внутри?
  • Подход перезаписи предотвращает удаление?
Крумелер
источник

Ответы:

3

Я полагаю, что в Unix файловая система модифицируется, как вы предлагаете (запись удалена из таблицы файловой системы). В Windows таблица файловой системы изменяется, и файл просто помечается как удаленный - инструменты восстановления данных могут восстановить файл. Посмотрев на приложения восстановления Windows, я думаю, что имя файла также изменилось, поэтому при восстановлении необходимо указать правильное имя файла. Изменение имени файла означало бы, что если вы создали файл с тем же именем, что и тот, который вы только что удалили, ОС не пришлось бы согласовывать два файла с одинаковым именем.

В MacOSX и Windows есть мусорная корзина (корзина), в которой, я думаю, реализована специальная папка, в которую копируются удаленные файлы. При очистке корзины эта папка очищается путем изменения таблицы системных файлов. Если вы используете NSFileManager, он обходит мусорное ведро (которого нет в iOS в любом случае), так что это настоящее удаление. Точно так же, если вы «гм» ​​из окна терминала.

Если вы создаете новый файл с тем же именем, что и у старого, в Unix это просто новая запись в таблице системных файлов, но, поскольку старая запись была удалена из таблицы, создание преимущества новая запись.

Это мое убеждение, и я готов к натиску павших голосов ;-)

Дерек Найт
источник
Вы определенно правы насчет мусорного ведра на OS X. Это просто специальная папка, больше ничего. И вы можете видеть его как папку в вашем домашнем каталоге, когда вы делаете свои невидимые файлы видимыми.
Может Сюрмели