┬I.2. Некоторые применения От упырей и призраков, от длинноногих бес╨ тий и тварей, налетающих по ночам, Госпо╨ ди, избави нас. Древняя корнуоллская молитва ┬I.2.1. Как спасти только что уничтоженый ▄текстовый┬ файл Слухи о моей смерти сильно преувеличены. Марк Твен Прежде, чем начать восстановление, уберите дискету(ы) из дисковода, попробуйте спокойно вдохнуть и выдохнуть несколько раз, отойдите на пятнадцать минут (опытные данные) от компьютера. Выпейте чашечку чая, а лучше крепкого кофе. Далее, возьмите в руки настоящее руководство и ... Для спасения Вашей информации есть ┌два─ способа. ┌Первый:─ "листать" область данных диска, разыскивая кластеры с данны╨ ми, относящимися к "убитому" файлу и копировать эти кластеры на другой диск. Этот способ отнимает довольно много времени, вероятно будет нару╨ шена структура файла ( изменен порядок расположения кластеров, относя╨ щихся к данному), но скорее всего Вы спасете ┌весь─ файл, без потерь. ┌Второй:─ по начальному кластеру файла в режиме FAT Fixer определить номера кластеров, имеющих вместо ссылки на некоторую ячейку в FAT код 000 и просто восстановить ┌ссылки─ на последующие кластеры файла (при си╨ туации, когда на протяжении большого промежутка времени Вы не удаляли ни одного файла, т.е. есть гарантия, что в FAT не было пробелов в за╨ полненной части области данных). Используя этот способ, Вы сэкономите время, но при невнимательной работе потеряете часть файла. Вначале изложим подробно ┌первый─ из них, простой, но очень трудоем╨ кий, который мы разобъем на этапы. ├Первый этап. 1) Загрузить программу Disk Fixer. 2) Вставить в дисковод "A" дискету с восстанавливаемым файлом. Вставить в дисковод "В" дискету, на которую Вы будете записывать нужную Вам информацию (перед этим откройте диск на запись). 3) В режиме DISK FIXER необходимо изменить объем буфера с 512 байт (1 сектор) на 1 Кбайт (1 кластер) командой [S]cale (режим [C]luster) . 4) Перейти на дисковод "В" (команда: dri[V]e ,[B]). В системе FAT FIXER загрузить ТРФ (команды: [F]AT, [R]ead) и определить первый ┌сво─╨ ┌бодный─ кластер в конце Таблицы ("прыгнуть" на ячейку с номером 2C9 и, двигаясь ┌вверх и─ ┌влево─ установить курсор на последнюю позицию с со╨ держимым 000). Записать на бумаге номер этого кластера. 5) Вновь вернуться на дисковод "А" (команда: dri[V]e ,"А"). 6) Загрузить кластер с номером 002 (команда: [R]ead, 002). ├Второй этап. Просмотреть каждый кластер, определяя, относится ли он к утерянному файлу или нет. Если ┌нет─, то просмотреть следующий кластер (клавиша [F2]). Если ┌да─, то записать кластер на другой диск и прочитать новый коман╨ дами: dri[V]e , [B] ; [W]rite , <номер пустого кластера на диске в дисководе "В">; dri[V]e , [A] ; [R]ead , <номер следующего кластера на диске в дисководе "А">. Это очень неприятно - запоминать (или записывать) номера кластеров, с которыми работаешь, но если уж убиваешь файл, думай о последствиях! ├Третий этап. После того, как Вам покажется, что файл уже полностью восстановлен, нужно в директории диска "В" создать новый файл. Для этого войти в сис╨ тему FAT FIXER ( команды: [F]AT , [R]ead ) и вспомнить номер последнего кластера, в который был записан кусок восстановленной информации (ника╨ ких клавиш нажимать не надо!). Затем "прыгнуть" на ячейку с этим номе╨ ром (команда: [L], <номер>) и установить признак конца файла (команда: [TAB]). Заметим, что если кластер является последним в файле, то в пеозиции курсора будет находиться знак "$$$". ├Четвертый этап. Итак, Вы имеете перед собой цепочку кодов "000", заключенную между двумя кодами "$$$". Заполняйте это пространство ссылками на следующие кластеры. Данная процедура выполняется так: 1) устанавливаете курсор на первый код "000" в цепочке и смотрите на раздел "ENTRY" в верхней части экрана. Там будет указан номер ячейки, в которой находится курсор; 2) прибавьте к полученному числу (в шестнадцатеричной системе) еди╨ ницу и запишите результат в ячейку (команда: [CR] + <результат>). Это действие повторяйте, пока не иссякнут нули в цепочке кодов. ├Пятый этап─ (последний аккорд!). Войти в режим редактирования в системе DIRECTORY FIXER (команды: dri[V]e, "B"; [D]irectory; [R]ead; [CR]), на чистом месте в графе имен файлов вписать имя Вашего файла, а в следующей графе - номер первого свободного кластера,о котором говорилось при изложении четвертого пунк╨ та первого этапа. О дате и времени последнего изменения файла не стоит беспокоиться, но объем файла необходимо указать обязательно! Объем вычисляется по следующей формуле: 1024╧(Nlast + 1 - Nfirst) , где Nlast - номер последнего записанного на диск кластера, Nfirst - номер первого свободного кластера на диске в дисководе "B" (см. четвертый пункт первого этапа). Полученное натуральное число надо перевести в шестнадцатеричную сис╨ тему счисления. ├Шестой этап. Вписав все данные о файле, "сбросить" их на диск (команды: [ESC]; [W]rite; [ESC]; [F]AT; [W]rite). Выйти из программы Disk Fixer (команда: [E]xit , [Y]es , [Y]es). Дошедшему до конца - └браво!─ Остается лишь проверить, удались ли Ваши манипуляции, или все надо начинать с начала. Загрузите полученный текст в текстовый редактор и внимательно просмотрите его... ├Примечание. Можно, конечно, писать файл и на тот же диск, но при этом возникает опасность погубить окончание файла, если ячейки FAT, относящиеся к "не╨ винно убиенному" файлу были последними в FAT. Переходим к описанию ┌второго─, более интеллектуального способа. Ана╨ логично предыдущему изложению разобъем последовательность действий на ряд этапов. ├Первый этап. 1) Загрузить программу Disk Fixer. 2) Вставить диск с восстанавливаемым файлом в дисковод "А". 3) В системe DIRECTORY FIXER найти имя уничтоженного Вами файла (оно будет содержать вместо первого символа знак "*"). Это можно осуществить командами: [D]irectory, [R]ead; поиск ┬ клавишами управления курсором. 4) В графе, следующей за той, где указано имя файла, посмотрите точ╨ ку входа в ТРФ (номер первого кластера файла). В последней графе найди╨ те объем файла. Теперь рассчитайте число кластеров в файле по формуле: Число_кластеров = 1 + Объем_файла div #400 и переведите полученный результат в десятичную систему. Номер первого кластера и число кластеров записать или запомнить. 5) Восстановить имя файла, вписав на место знака "*" первый символ имени (или любой другой, кроме символа "Е" русского алфавита) при помо╨ щи команд: [CR], <нужный символ>, [ESC]; [W]rite . ├Второй этап. 1) Загрузить систему FAT FIXER (команды: [ESC]; [F]AT, [R]ead). 2) "Прыгнуть" в ячейку с номером первого кластера "погибшего" файла командой: [L], <Номер ячейки>. 3) Передвигая курсор по экрану, посмотреть номер следующей "пустой" ячейки (с кодом "000"). Вписать ее номер в предыдущую "пустую" ячейку командами: [CR], <номер кластера>, [ESC]. Этими манипуляциями Вы восстановите одну ссылку, принадлежащую уте╨ рянному файлу. Продолжайте в том же духе, попутно считая каждую восста╨ новленную ссылку. Когда их число достигнет величины Число_кластеров_в_файле_без_единицы , в следующей ячейке ( содержащей нулевой код ) поставьте признак конца файла командой: [CR], [TAB], [ESC]. ├Третий этап. Записать восстановленную ТРФ на диск при помощи команды [W]rite, [Y]es , и с радостью выйти из программы Disk Fixer командами: [ESC]; [E]xit, [Y]es, [Y]es. Вздохните свободно: если никаких сбоев не было, то ваш файл спасен! Загрузите его в текстовый редактор и внимательно просмотрите. Запишите текст на диск снова (желательно под другим именем). ├Примечания : ═) проблема восстановления файлов значительно усложняется, если было уничтожено несколько файлов; и еще больше, если среди нескольких унич╨ тоженных файлов надо восстановить один самый нужный. В этом случае при╨ дется восстанавливать все файлы в один большой, затем указывать общий объем файла, а потом в текстовом редакторе отбрасывать "все лишнее"; ║) следует помнить, что в тексте может встретиться код ASCII симво╨ ла, обозначающего конец текстового файла (1Ah). Поэтому после восста╨ новления Таблицы Размещения Файлов в режиме DISK FIXER надо просмотреть содержимое всех восстановленных кластеров и заменить все коды 1Аh на код 20h (соответствует символу "Пробел").