Алгоритм восстановления файла на диске FAT
Читайте, как происходит восстановление данных с FAT диска. Какой алгоритм используется программами для восстановления файлов. Итак, файловая система обнаружена, и мы приступили к её анализу. Теперь нам требуется идентифицировать физические секторы на диске, принадлежащие данному конкретному файлу. Для этого программа анализирует файловую систему.
В первой части статьи мы рассмотрели алгоритм поиска и структуру таблицы разделов FAT. В файловой системе FAT каждому файлу и каталогу ставится в соответствие структура, называемая записью каталога. В этой структуре хранится вся базовая информация о файле включая имя файла, атрибуты, начальный адрес и длина файла.
Ищем файл в таблице FAT
Собственно содержимое файла или каталога хранится на диске в виде блоков данных фиксированной длины, называемых кластерами. Каждый кластер, в свою очередь, содержит некоторое фиксированное для каждого раздела количество физических секторов на диске. Конкретное количество секторов, содержащихся в кластере, определяется соответствующей записью в структурах файловой системы.
Самое интересное начинается в случае, если файл или каталог содержит более одного кластера. Последующие кластеры находятся при помощи структуры данных, называемой FAT. Эта структура используется с двоякой целью: для идентификации следующих кластеров в файлах и для определения того, свободен или занят данный конкретный кластер.
Рис.1 Физическая структура файловой системы FAT.
Перед тем, как начать анализ файловой системы FAT, требуется корректно идентифицировать три важных области этой системы.
- Первая область – зарезервированная, она содержит данные из категории файловой системы. В версиях FAT12 и FAT16 зарезервированная область занимает всего один сектор, но формально размер этой области определяется в загрузочном секторе.
- Вторая область – область FAT. Она содержит основные и резервные структуры файловой системе. Начало этой области – сектор, следующий за зарезервированной областью, а ее размер определяется количеством и размером структур FAT.
- Наконец, последняя область – область данных. Именно в этой области хранятся файлы и содержимое каталогов.
В процессе анализа файловой системы нас будет интересовать в первую очередь именно область FAT – именно здесь хранятся структуры, которые ставят в соответствие файлы и каталоги физическим адресам на диске, по которым хранится содержимое этих файлов.
При анализе файловой системы важно корректно идентифицировать все три физические области. Начало зарезервированной области – всегда в нулевом секторе файловой системы. Размер этой области указывается в загрузочном секторе, и для систем FAT12 и FAT16 составляет ровно один сектор. В FAT32 зарезервированная область может занимать несколько секторов.
Область FAT следует сразу за зарезервированной областью. Область FAT содержит одну или несколько структур FAT, а размер этой области вычисляется умножением количества структур FAT на размер каждой структуры. Эти значения хранятся в загрузочном секторе (зарезервированная область).
Восстановление файлов
Итак, мы вплотную подошли к вопросу о восстановлении диска FAT. Как мы помним, при удалении файла соответствующая ему запись в файловой системе помечается как удалённая, а занимаемые им кластеры, соответственно, получают статус свободных (не выделенных).
Важно отметить, что записи кластеров в FAT могут быть утеряны; соответственно, при анализе записи мы можем получить информацию о физическом адресе начала файла и об его размере. При этом какая бы то ни было информация об остальных кластерах файла отсутствует.
Итак, просто восстановить всю цепочку кластеров, принадлежащих удалённому файлу, мы не можем. Но можно попытаться восстановить содержимое файла, прочитав данные из известного начального кластера. Если файл небольшой и его содержимое умещается в единственном кластере – прекрасно. Если нет – придётся придумать, как выбрать оставшиеся кластеры. И здесь придётся повозиться.
Определить, какие именно кластеры принадлежали конкретному файлу, можно одним из двух методов. Можно просто последовательно скопировать объем данных, соответствующий размеру файла, игнорируя состояние выделения кластеров. Можно считать данные только из свободных кластеров. Логично предположить, что, действуя первым методом, мы надеемся исключительно на удачу, в то время как второй метод способен восстановить даже некоторые фрагментированные файлы.
Рис.2 Сценарии восстановления файла.
На рисунке 2 описаны три различных сценария восстановления файла на примере шести кластеров файловой системы. Размер файла – 7094 байт, а размер кластера — 2048 байт. Это означает, что для хранения данного файла изначально были выделены четыре кластера. Нам также известен адрес начального кластера файла – кластер 56. Голубым цветом обозначены кластеры, в которых хранилось содержимое удалённого файла в каждом сценарии.
- В сценарии 2.А файл занимает последовательно четыре кластера. В этом случае файл будет корректно восстановлен как первым, так и вторым методом: оба алгоритма корректно считают кластеры 56-59.
- В сценарии 2.В файл был фрагментирован и записан в виде трёх фрагментов. Кластеры 57 и 60 на момент восстановления уже выделены другому файлу. В этом сценарии первый метод точно так же, как и в предыдущем случае, восстанавливает кластеры 56-59, что приводит к очевидной ошибке: файл будет восстановлен некорректно. Второй метод корректно восстановит секторы 56, 58, 59 и 61.
- Наконец, в сценарии 2.С мы видим случай, при котором файлу выделены те же фрагменты, что и в прошлом сценарии, но кластеры 57 и 60 на момент восстановления не были заняты другим файлом. В этом сценарии оба метода ошибочно восстановят кластеры 56-59.
Как видим, второй метод даёт большую вероятность корректного восстановления файла по сравнению с первым. Именно этот метод был использован в продуктах Hetman Software.
В рассмотренных выше ситуациях подразумевается, что все фрагменты файла остаются доступными. Однако часто встречаются ситуации, в которых некоторые фрагменты оказываются перезаписанными новым содержимым. В таких случаях точно восстановить данные невозможно ни одним из описанных способов.
Заключение
Как мы увидели, файловая система FAT устроена достаточно просто, поэтому она часто используется в картах памяти CompactFlash, Memory Stick, xD-Picture Card. При этом гарантированно восстановить файл, удалённый с диска, размеченного в данной файловой системе, получается не всегда.
Для ёмких носителей (например, жёстких дисков) Windows гораздо чаще использует другую файловую систему – NTFS. Файловая система NTFS устроена значительно сложнее FAT. Восстановление удалённых файлов в NTFS – гораздо более сложный процесс, тем не менее, приводящий к более уверенным результатам. Исследование восстановления файлов в системе NTFS – тема для отдельной статьи или даже серии статей.
поему нельзя сделать эту программу бесплатно
Я как начинающий программист открыла для себя из этой статьи очень многое. Автор очень хорошо постарался объяснить как с помощью не сложного алгоритма восстановления файла на FAT диске добиться очень даже не плохих высот. Раньше у меня был опыт восстановления удаленных файлов, но полностью не получалось все восстановить, а тут можно без сомнения восстановить 100% данных. (Сама лично пробовала) Спасибо вам за подобные статьи, буду с удовольствием ждать подобной информации.
Статья очень полезная для тех кто не полностью осознал принципы восстановление данных.В интернете существует очень много программ которые служат для восстановление данных но не все они полноценно могут восстановить данные с диска а некоторые даже могут привести к полному их исчезновению с HDD, программа Hetman FAT Recovery как по мне справляется отлично с данной работой, за короткий период благодаря хорошей оптимизации программы разработчиками.Советую вам использовать софт Hetman Software так как цена соответствует качеству.
Тема достаточно полезная, меня как программиста она очень заинтересовала. Взяла эту тему для своего доклада, я его усовершенствовала, доклад занял первое место в регионе. Алгоритм восстановления файла на FAT диске полезная вещь для человека вообще не знающего это. И кстати Ваш сайт очень хороший, много хорошо подобранных материалов о компьютерах и не только.
Что указывается в таблице размещения файлов FAT?
Таблица размещения файлов FAT содержит информацию о расположении каждого файла и каталога на диске. Она также содержит информацию о каждом файле, такую как его имя, размер, дату и время создания, а также атрибуты файла.
Какая информация содержится в FAT?
FAT (File Allocation Table) - это таблица распределения файлов, которая хранится на жестком диске. Она содержит информацию о размере, имени, дате и времени создания, адресе начала и конца файла и других сведениях, необходимых для работы с файлами.
Где хранятся атрибуты файлов в файловой системе FAT?
Атрибуты файлов в файловой системе FAT хранятся в заголовках директорий или записях файлов. Эти атрибуты могут быть установлены или изменены с помощью команд DOS ATTRIB.
Что является недостатком файловой системы FAT?
Одним из недостатков файловой системы FAT является то, что она не поддерживает файлы больше 4 Гб. Это ограничение стало проблемой, когда жесткие диски стали разрастаться. Другим недостатком является то, что FAT не поддерживает права доступа к файлам, что может привести к безопасности.
Что происходит при удалении файла с диска с файловой системой FAT?
При удалении файла с диска с файловой системой FAT происходит процесс маркировки файла как «удаленный». Это означает, что файл по-прежнему находится на диске, но его имя и атрибуты были помечены как «удаленные». Пространство, занимаемое этим файлом, становится доступным для использования другими файлами.
Если у вас остались вопросы про алгоритм восстановления файла на FAT диске, задавайте их в комментариях.