ния. Первый способ заключается в использовании одного из встроен-
ных средств операционной системы MS-DOS : программы CHKDSK или
программы RECOVER. Эти программы могут найти и изолировать по-
врежденные области диска для того, чтобы могли восстановить часть
или весь разрушенный файл.
Второй способ заключается в использовании программы DEBUG,
которая позволяет вам делать все что угодно с целью восстановле-
ния разрушенного или стертого файла. К сожалению, программа DEBUG
предлагает не слишком "интеллектуальную" помощь в достижении ва-
шей цели, и часто является просто "последней соломинкой". Похожий
на этот способ заключается в написании вашей собственной програм-
мы восстановления, такой, как программа RESCUE, представленная
- 11-50 -
ниже в этой главе. Информация, находящаяся в предыдущем разделе,
по декодированию каталога диска и таблицы FAT является существен-
но важной для написания собственных программ восстановления.
Последний и наиболее удобный способ заключается в использо-
вании одной из уже имеющихся готовых программ - утилит таких, как
"Norton-утилиты" или "Ultra-утилиты". Эти утилиты подобны ящику с
инструментами, и в них предусмотрены все возможности перечислен-
ных выше способов, включая декодирование таблиц FAT, исправление
поврежденных файлов и восстановление стертых файлов.
Восстановление разрушенных файлов при помощи утилит
CHKDSK и RECOVER
Понимание структуры расположения диска в операционной систе-
ме MS-DOS может оказаться очень полезным, когда файл или часть
диска оказывается разрушенным. К счастью, операционная система
содержит несколько функций, которые не только привлекают внимание
к поврежденным частям диска, но позволяют вам также восстанавли-
вать данные, доступ к которым другими способами оказался закры-
тым. Встречаясь с проблемами размещения файлов или неисправными
дисками, операционная система MS-DOS автоматически изолирует по-
врежденные части диска, если система пытается обратиться к ним.
Несмотря на то, что операционная система MS-DOS не обязательно
будет точно сообщать вам о том, что произошло, вы, вероятнее все-
го, получите сообщение об ошибке, указывающее на то, что часть
диска, с которого вы хотели вести считывание, недоступна. Если
это случается, используйте команду DIR для просмотра каталога
диска. Если команда DIR покажет, что каталог исправен, восстанов-
ление файла (файлов) должно вестись более или менее прямолиней-
но: следует использовать команду RECOVER для файла или файлов.
Если элементы каталога отсутствуют в каталоге, следует поль-
зоваться командой CHKDSK, сначала без параметров. Вероятно, вы
получите сообщение, говорящее о том, что определенное количество
кластеров утеряно с диска, что является хорошим признаком, потому
что он указывает на то, что вы можете снова использовать команду
CHKDSK, но на этот раз с параметром /F. Этот параметр заставляет
команду CHKDSK считывать все "потерянные" кластеры и помещать их
в один файл. Иногда команда CHKDSK не может восстановить все по-
терянные данные за один проход. Нужно использовать команду CHKDSK
столько раз, сколько необходимо до появления сообщения "Утерянные
кластеры". Команда CHKDSK создает новый файл каждый раз при ее
использовании для восстановления потерянных данных. После того,
как новый файл (файлы) создан, скопируйте его на новый диск, а
затем просмотрите только что созданный файл командой CHKDSK.
Если восстановленные данные соответствуют текстовым файлам,
вы можете открыть файл текстовым редактором или текстовым процес-
сором и отсортировать информацию в нем. Если, однако, восстанов-
ленные данные соответствуют файлам в нечитаемом формате (например,
в виде объектного кода или машинного кода), вы должны использо-
вать программу DEBUG или какую-то другую утилиту для просмотра
информации и ее сортировки. В любом случае не удивляйтесь, если
небольшая часть данных будет все-таки утеряна. Часть диска, на
которой хранились данные, была повреждена так сильно, что данные
с нее не могут считываться. В большинстве случаев невосстановимые
данные состоят из приращений по 512 или по 1024 байт, что зависит
от формата диска (один 512-байтовый сектор в одном кластере для
- 11-51 -
односторонних гибких дисков или два 512-байтовый сектор в одном
кластере для двухсторонних гибких дисков). Причина , по которой
операционная система MS-DOS не может восстановить эти данные,
заключается в том, что рассматриваемый кластер (кластеры) уже за-
изолированы в соответствующих элементах таблицы FAT и каждый та-
кой элемент содержит значение (F)FF7, указывающее на то, что
кластеры испорчены и что ни одна программа не может использовать
их ни при каких обстоятельствах. Вы могли попробовать прочитать
эти кластеры программой DEBUG, но они могут также быть так сильно
повреждены, что и программа DEBUG не сможет их прочитать.
В следующем разделе говорится о том, как следует использо-
вать программу DEBUG для считывания частей диска сектор за секто-
ром.
Восстановление стертых файлов
К счастью, когда файл был стерт при работе под управлением
операционной системы MS-DOS, только часть элемента каталога этого
файла меняется: первый символ имени меняется на шестнадцатиричное
значение E5. Это значение используется как флаг (признак). Когда
операционная система MS-DOS просматривает секторы каталога в по-
исках свободного места для размещения каталоговой информации о
новом файле, система находит и использует первый элемент, начина-
ющийся либо с шестнадцатиричного значения E5 (элемент каталога
еще не использовался). Остальная информация в элементе каталога
остается без изменений. Если бы все, что нам нужно сделать, это
изменить значение E5 на значение первого символа имени стертого
файла, процедура восстановления стертых файлов была бы очень лег-
кой. К сожалению, операционная система MS-DOS значительно более
эффективно работает при стирании информации, помещенной в секто-
рах таблицы FAT. Несмотря на то, что операционная система MS-DOS
не затрагивает информации, хранящейся в секторах данных или клас-
терах, занятых файлом, система устанавливает в значение 000 все
элементы таблицы FAT, соответствующие этим кластерам. Операцион-
ная система MS-DOS делает это потому, что это - единственный спо-
соб для системы быстро просмотреть диск в поисках пустого места,
когда она хочет разместить новые файлы. Таким образом, наша зада-
ча по восстановлению стертого файла чуть более сложная, чем может
сначала показаться. Некоторые основные правила по восстановлению
стертых файлов описываются ниже.
Основные принципы
Существует много способов потерять файл. Может быть, вы не-
ловко использовали команду стирания ERASE или команду удаления
DEL. Или, может быть, произошел сбой в ваших аппаратных средствах
или сбой питания во время сеанса редактирования. После просмотра
диска вы обнаружили, что редактируемый вами файл не может быть
найден.
В общем случае файл в действительности будет стерт (при за-
мене первого символа имени файла в элементе каталога на шестнад-
цатиричное значение E5) только тогда, когда он стирается командой
ERASE или DEL или любой другой программой, которая выполняет ту
же функцию. Если вы теряете файл из-за неисправности аппаратных
средств или сбоя питания, файл, вероятно, не будет в действитель-
ности стерт. Он просто будет потерян с диска, если используемая
- 11-52 -
вами программа не имела достаточно времени, чтобы закрыть файл
должным образом. В этом случае вы можете использовать программы
операционной системы MS-DOS восстановления диска RECOVER и CHKDSK
для восстановления потерянных данных.
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
¦ ПРЕДОСТЕРЕЖЕНИЕ ¦
¦ При восстановлении файлов первое, что вы должны сде- ¦
¦лать, это создать точную копию диска при помощи программы ¦
¦копирования диска. Не размещайте больше новые файлы на ¦
¦диске до тех пор, пока вы не сделаете попытку восстано- ¦
¦вить потерянные или стертые файлы. ¦
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Это предупреждение очень важно, потому что помещение новых
данных на диск, вероятно, затруднит процесс восстановления файлов
или сделает его невозможным. Создавая сначала точную копию диска,
вы избежите возможности порчи некоторых частей диска (а, следова-
тельно, оградите себя от постоянной потери данных) в результате
неправильного восстановления файла. Таким образом, если с первого
раза что-то не будет ладиться, у вас есть в запасе исходный диск,
с которого вы можете скопировать данные и снова начать процедуру
восстановления файла.
Лучшим способом определения, был ли файл действительно стерт
или он просто потерян является использование программы CHKDSK без
параметров. Если файл потерян, программа CHKDSK выводит на экран
дисплея сообщение: "Потерянные кластеры найдены". Это сообщение
выводится на экран, если программа CHKDSK находит разрыв в цепи
кластеров, описанных в таблице FAT, например, если последний
кластер в цепи не указывает на элемент таблицы FAT, в котором со-
держится маркер конца файла (значение от (F)FF8 до (F)FFF. Когда
такое случается, вы должны повторно ввести программу CHKDSK с па-
раметром /F для восстановления всех потерянных кластеров и поме-
щения данных в файл, созданный программой CHKDSK.
Именно в этом месте начальный момент создания копии всего
исходного диска может оказаться благословенным, потому что если
вы имели на диске также и другие действительно стертые файлы, ко-
манда CHKDSK /F поместит файл, содержащий восстановленные данные
поверх области, содержащей стертые файлы. Восстановление файлов
во всех случаях должно проводиться методично и аккуратно.
После того, как стало ясно, что файл был действительно
стерт, вам точно известны три вещи: во-первых, элемент каталога
остается неповрежденным, за исключением первого символа имени
файла, который был заменен шестнадцатиричным значением E5.
Во-вторых, кластеры или секторы в области данных диска использо-