вавшиеся исходно файлом, по-прежнему содержат данные файла.
В-третьих (что весьма печально!), каждый из элементов таблицы
FAT, использовавшихся исходно для отражения кластеров, занятых
файлом, содержит значение (0)000.
Для восстановления стертого файла следует выполнить перечис-
ленные ниже шаги:
1. Вести просмотр элементов каталога до тех пор, пока вы не
найдете элемент, который бы начинался с шестнадцатирично-
го значения E5 в байте 00. Посмотрите на остальные симво-
лы в имени файла в байтах с 1 по 10, и проверьте, что
это действительно был файл, который вы хотите восстанав-
ливать.
- 11-53 -
2. Посмотрите на номер начального кластера (байты 26 и
27). Используйте номер начального кластера в качестве
указателя на первый кластер в области данных диска, заня-
того файлом, а также на первый начально используемый эле-
мент таблицы FAT.
3. Посмотрите на размер файла (байты с 28 по 31, последние
четыре байта в элементе каталога). Знать размер файла
важно в том, случае , если файл занимает более одного
кластера в области данных диска, а особенно важно, если
части файла разбросаны по разным частям диска.
4. Определив номер кластера, занятого началом файла, прос-
мотрим содержимое этого кластера. Поищем в кластере сим-
вол кода ASCII "Control-Z" (шестнадцатиричное значение
А1). Если вы знаете, что файл содержит текст (в коде
ASCII) и если будет обнаружен один или несколько сим-
волов "Control-Z", восстанавливать файл нужно следующим
образом (в противном случае продолжайте работу с шага 5):
а. Если был обнаружен один или несколько символов
"Control-Z", вы знаете, что файл занимает только один
кластер. Начинайте восстанавливать файл путем помеще-
ния любого числа от (F)FF8 до (F)FFF в элемент таблицы
FAT, соответствующий этому кластеру.
б. Измените шестнадцатиричное значение E5 в элементе ка-
талога на любой нужный вам первый символ имени файла .
в. Вернувшись на подсказку операционной системы MS-DOS,
используйте команду DIR для проверки того, что файл
появился в списке файлов диска. Откройте файл тексто-
вым редактором или текстовым процессором для того,
чтобы убедиться, что его содержимое осталось правиль-
ным. Все! Теперь вам нужно на этом остановиться и иг-
норировать все следующие шаги.
5. Если конец файла не был найден, просмотрите все следующие
элементы таблицы FAT (последовательно) до тех пор, пока
вы не встретите элемент, содержащий значение 000. Прос-
мотрите содержимое кластера, имеющего такой же номер, что
и элемент таблицы FAT. Если содержимое окажется частью
стертого файла, запомните номер этого кластера и продол-
жите просмотр других элементов таблицы FAT и эквивалент-
ных им кластеров до тех пор, пока вы не сочтете, что дос-
тигли конца файла. Объем просмотра зависит от нескольких
моментов, описанных в следующем шаге.
6. Определите по размеру файла, взятому из элемента катало-
га, сколько кластеров должен занимать файл. Кроме этого,
помните, что, если вы восстанавливаете текстовый файл в
коде ASCII, наличие в кластере символа "Control-Z"(шест-
надцатиричное значение A1) указывает на конец файла .
Следовательно, возвращайтесь обратно на шаг 5 до тех пор,
пока вы не достигните максимального числа кластеров, за-
нятых файлом. Отмечайте каждый номер кластера, который
содержит данные, относящиеся, по вашему мнению, к стерто-
му файлу. Если в каком-то кластере вы встретили символ
"Control-Z", но еще не определили, сколько кластеров
должно составлять искомый файл, будьте осторожны: клас-
тер, в котором появился символ "Control-Z", может озна-
чать конец другого стертого файла. Просмотрите другие
последующие элементы каталога по стертым файлам и отметь-
те для себя их начальные кластеры, а также размеры их
- 11-54 -
файлов. Возможно, что два или более стертых файла имеют
переплетенные пути доступа к последовательностям своих
кластеров.
7. После того, как вы обоснованно решите, какие кластеры,
заняты нужным файлом, как они сцеплены, а также будете
уверены в том, что нашли конец файла, перестройте таблицу
FAT. Начиная с первого кластера, перейдите к эквивалент-
ному элементу таблицы FAT и сохраните номер следующего
кластера, занятого файлом. Затем перейдите на следую-
щий элемент таблицы FAT и сохраните номер следующего
кластера. Продолжайте выполнять эту операцию до тех пор,
пока не достигнете последнего кластера. Тогда в элемент
таблицы FAT вы поместите любое число от (F)FF8 до (F)FFF,
чтобы отметить конец файла. Далее перейдите к элементу
каталога, относящемуся к нашему файлу и измените первый
символ из шестнадцатиричного значение E5 в то значение в
коде ASCII в шестнадцатиричном виде), которое вы хотели
бы видеть в качестве первого символа имени файла.
8. Итак, все сделано. После возвращения на подсказку опера-
ционной системы MS-DOS, введите команду DIR, чтобы прове-
рить, что файл появился в каталоге диска. Если восстанав-
ливаемый файл является текстовым файлом, откройте файл
текстовым редактором или текстовым процессором, чтобы
проверить его содержимое. Если это файл какого-то другого
типа (например, файл, имеющий расширение имени .СОМ или
.EXE), загрузите файл, как программу для проверки , рабо-
тает ли она правильно.
По перечисленным выше шагам может показаться, что процедура
восстановления файлов является довольно прямолинейной. В зависи-
мости от имеющихся в вашем распоряжении программных инструментов,
в действительности однако просмотр данных на диске и запись ин-
формации на диск может быть сложным занятием. Отметим здесь, что
шаги 6 и 7 содержат предостережения о возможности того, что не-
сколько ранее стертых файлов могут переплестись из-за сложной по-
следовательности расположения их кластеров. Восстановление пере-
путанных данных указанным выше способом может оказаться очень
нудным и в то же время головоломным занятием. Но при наличии тер-
пения (возможно всего лишь небольшого!) и решимости быть
методичным, вы непременно сможете распутать файлы.
Теперь, когда вы имеете представление о том, какие усилия
потребуется затратить для восстановления стертых файлов, пришло
время продемонстрировать, что самый быстрый способ восстановления
стертых файлов заключается в копировании их на диск-дубликат. Вы
должны взять себе за правило часто копировать проделанную вами
работу и всегда пользоваться копиями приобретенного или личного
программного обеспечения, но никогда не оригиналами диска (дис-
ков).
Восстановление стертых файлов аппаратным способом
Если в вашем распоряжении имеется только программа отладки
DEBUG для восстановления файлов, и вы имеете достаточно терпения
и времени для набора и ассемблирования описанной в этой главе про-
граммы контроля RESCUE, данные ниже советы могут оказаться полез-
ными для вас.
- 11-55 -
Существует четыре функции или команды программы DEBUG,
представляющие для нас интерес: L (Загрузка), D (Отображение),
E (Ввод), W (Запись). После того, как вы создали копию диска со
стертым файлом на нем, загрузите программу DEBUG. При появлении
подсказки программы DEBUG введите команду L для загрузки данных с
той части диска, которую вы хотите просмотреть:
L <адрес> <дисковод> <начальный сектор> <конечный сектор>
В данном случае <адрес> представляет собой начальный адрес в
памяти, в который должны загружаться данные, <дисковод> означает
номер дисковода (например, 0 для А, 1 для В, 2 для С), а <началь-
ный сектор> и <конечный сектор> указывают диапазон логических
секторов (только шестнадцатиричные числа), которые вы хотите за-
грузить. Для загрузки содержимого всех секторов каталога на дву-
стороннюю 40-трековую 5,25-дюймовую дискету, отформатированную по
девять секторов на трек и помещения ее 0 дисковод В, введите сле-
дующую команду:
А>DEBUG
-L 0 1 5 B
После того, как информация будет загружена, вы можете ис-
пользовать команду D для отображения на экране дисплея содержимо-
го памяти и команду Е для изменения отдельных байтов, если нужно.
После того, как вы пометили нужную вам информацию и произвели
требуемые изменения, данные могут быть обратно записаны на диск
при помощи команды W. Команда W использует точно такой же синтак-
сис, что и команда L. Удостоверьтесь, что вы задали те же пара-
метры, что и в команде L. Это будет вам гарантией того, что толь-
ко правильная часть диска будет переписываться.
Единственным моментом, когда вам нужно записывать информацию
на диск, является тот момент, когда вы меняете первый символ име-
ни стертого файла в относящемся к данному файлу элементе катало-
га, или когда вы модифицируете содержимое элементов таблицы FAT,
соответствующей этому файлу. При изучении содержимого кластеров,
занятых реальным файлом, вам не обязательно нужно записывать ин-
формацию обратно на диск, если только вы не производили каких-то
сложных работ по исправлению, которые иначе нельзя выполнить. Бо-
лее подробную информацию по использованию программы отладки DEBUG
и ее команд можно найти в Руководстве пользователя по операцион-
ной системе MS-DOS (или в аналогичном руководстве по вашей конк-
ретной системе).
Использование программы контроля RESCUE
Программа, описанная листингом 11-4, очень проста в исполь-
зовании. После набора команды RESCUE задается имя стертого файла.
Команда RESCUE требует задания только имени файла, то есть, за-