Утилита File Fix (FILEFIX)

8.4.7. Утилита File Fix (FILEFIX)

Эта утилита разработана для полного или частичного восстановления поврежденных файлов с данными, записанных в форматах следующих популярных программных продуктов:

  электронной таблицы Lotus 1-2-3 фирмы Lotus Development;

  интегрированной системы Symphony той же фирмы;

  СУБД dBASE компании Ashton-Tate;

  СУБД Clipper фирмы Nantucket;

  СУБД FoxBase компании Fox Software.

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

При восстановлении файлов в форматах, отличных от перечисленных, могут оказаться по­лезными только утилиты NDD и Disk Editor, причем, если Вы в деталях знаете внутренний формат поврежденных файлов. Можно ожидать, что список форматов, поддерживаемых утилитой FILEFIX, будет в скором времени существенно дополнен.

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

Утилита FILEFIX способна функционировать только в диалоговом режиме и запускается командной строкой

FILEFIX [pattem]

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

1-2-3               — для восстановления файла (электронной таблицы) в формате Lotus 1-2-3 версии 1А или 2;

Symphony      — для восстановления файла (электронной таблицы) в формате Symphony;

dBASE             для восстановления файла (компонента базы данных) в форматах dBASE III, III + , IV, а также FoxBase и Clipper.

 

 

Рис.   8.50.   Главный   экран   утилиты   FILEFIX

 

С перечисленными совместимы форматы файлов и многих других программных продуктов.

После указания формата файла открывается диалоговое окно, в котором следует выбрать для восстановления единственный файл (см. рис. 8.51), если это не было сделано в командной строке при запуске утилиты. Задать подлежащий восстановлению файл можно одним из следующих способов:

1)  ввести спецификацию файла в текстовой области File name (в ней первоначально отобра­жается шаблон со стандартным расширением для выбранного формата, но его можно заменить);

2)  выбрать привод, каталог и файл в областях-списках Drives, Dirs и Files соответственно (однако заметим, что в области Files отображается список только тех файлов в каталоге, которые соответствуют образцу в области File name).

Допускается комбинирование перечисленных способов, например, достаточно ввести специ­фикацию шаблона файлов в области File name (при этом содержимое областей Drives, Dirs и Files изменится соответствующим образом), а затем выбрать файл в области Files. Если при запуске FILEFIX в качестве аргумента задана спецификация шаблона файла, то останется проделать только последнюю операцию.

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

 

Восстановление файла базы данных

Каждый файл в формате dBASE (FoxBase, Clipper) хранит таблицу, являющуюся логическим компонентом базы данных и формально называемую отношением. Такой файл состоит из заголовка и последовательности записей фиксированной длины.


Рис.   8.51.   Диалоговое   окно   Choose   File   to   Repair

Каждая запись (record) представляет строку таблицы и логически разбита на поля (fields) в соответствии со столбцами этой таблицы.

Поле может иметь один из следующих типов:

Character (Char)          — символьный;

Numeric                       — цифровой (целые числа);

Logical                         — логический;

Date                             — тип «дата»;

Memo                          — текстовый (тип «память»);

Float                            — плавающий (вещественные числа).

Заголовок (Header, или Bookkeeping information) содержит справочную информацию о файле, а именно:

  версию программного продукта, которым создан файл;

  описание структуры записи (имена, порядок, типы и длины полей).

Сразу после выбора подлежащего восстановлению файла открывается диалоговое окно, в котором предлагается специфицировать один из следующих режимов работы утилиты:

1)  Fully automatic (полностью автоматический резким восстановления);

2)  Review damaged records (режим интерактивного восстановления с просмотром поврежденных записей);

3)  Review all records (режим интерактивного восстановления с просмотром всех записей, как поврежденных, так и неповрежденных).

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

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

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

В том же диалоговом окне пользователь может переустановить следующие опции:

1)  Use Clipper field limits (использовать ограничения на поля, налагаемые СУБД Clipper);

2)  Fix shifted data automatically (восстанавливать сдвинутые данные автоматически);

3)  Strict character checking (осуществлять строгий контроль символов).               

Первая опция включается при восстановлении файла, подготовленного продуктом Clipper. Дело в том, что Clipper-файлы имеют несколько отличные от стандарта dBASE ограничения по длине и числу полей.

Вторая опция сбрасывается, если заранее известно, что файл не имеет серьезных проблем, связанных с выравниванием записей и полей. Это позволяет ускорить восстановление.

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

После выбора режима восстановления и переустановки опций пользователю следует выдать подкоманду ОК.

Независимо от сделанных в этом окне установок утилита FILEFIX сначала проверяет целостность размещения (allocation integrity) файла. Этот процесс отображается в небольшом открывшемся окне.

Затем утилита анализирует корректность заголовка файла. Без его восстановления невозможно продолжение работы. Результаты анализа заголовка выводятся в открывшееся следующим ди­алоговое окно. Заголовок может быть:

1)  неповрежденным (Header is OK);

2)  незначительно поврежденным (Header is Slightly Damaged);

3)  сильно поврежденным или вообще отсутствовать (Header is Badly Damaged, или Severely damaged or missing).

Незначительно поврежденный заголовок может быть восстановлен утилитой автоматически, а сильно поврежденный заголовок требует ручного восстановления или восстановления посред­ством импорта заголовка из другого неразрушенного файла (например, из старой его версии). FILEFIX предоставляет все возможности для этого.

В том же окне сообщается, что Вы можете начать процесс восстановления записей немедленно или сначала просмотреть и, возможно, изменить определения полей. Первый вариант продолжения работы (подкоманда Skip review) выбирается в случаях, когда заголовок не поврежден или поврежден незначительно. Второй вариант (подкоманда Review fields) выбирается для просмотра и, возможно, восстановления заголовка файла. Иногда это единственная возможность продолжения работы.

Если пользователь выдал подкоманду Skip review, то заголовок принимается и начинается процесс восстановления записей файла, реализация которого определяется установленным ре­жимом работы утилиты (см. ниже).

При выборе подкоманды Review fields утилита входит в диалог по просмотру и восстановлению заголовка файла.

В последнем случае открывается диалоговое окно, в которое в.табличной форме выводится определение записи, извлеченное из заголовка (Current Structure). Каждая строка таблицы является определением поля, а сама таблица имеет следующие колонки:

Num                 — порядковый номер поля в записи;

Field name       — имя поля;

Туре                 — тип поля;

Width                — ширина поля в байтах;

Decimals           — количество десятичных цифр (для полей типа Numeric и Float).

Под этой таблицей отображается общий размер записи в байтах (Total record size). В данном окне можно выбрать один из следующих вариантов продолжения работы:

Accept              — принять определение записи;

Revise               — изменить определение записи;

Cancel              — отменить восстановление файла.

В первом случае просмотр заголовка файла завершается и начинается восстановление записей файла (см. ниже).

Во втором случае (Revise) открывается диалоговое окно, в котором предлагается выдать одну из следующих подкоманд:

Import              — импортировать заголовок из другого файла, а затем (при необходимости) его отредактировать;

Edit                               — отредактировать заголовок (определение записи);

Cancel                           — отменить восстановление файла.

В первом случае откроется диалоговое окно Choose Import File (полностью совпадающее с показанным на рис. 8.51), в котором следует выбрать файл, заголовок которого будет импорти­роваться. После импорта Вы сможете перейти к редактированию определения записи или принять его в существующем виде.

Во втором случае открывается диалоговое окно, в котором можно установить правильное смещение первой записи относительно начала файла (start position), т.е. размер заголовка. Это поможет в последующем восстановить заголовок файла. В прямоугольной рамке окна показы­ваются данные, записанные в файле, начиная со стартовой позиции, а под рамкой — номер текущей стартовой позиции (File position). Используя клавиши и → для сдвига содержимого прямоугольной рамки (или комбинации клавиш Ctrl-← и Ctrl-→ для сдвига большими шагами), установите начало первой записи файла в ее левом верхнем углу и выдайте подкоманду ОК. Можно ввести номер стартовой позиции и непосредственно. Если повреждения заголовка зна­чительны, то может возникнуть необходимость его пропуска.

Заметим, что заголовок в прямоугольной рамке (при соответствующем сдвиге ее содержимого) отображается последовательностью имен полей, представленных прописными буквами и перемешанных с другими символами (ASCII-интерпретация числовых значений). Обычно заголовок завершается символом ♪.

После выдачи ОК в описанном окне открывается следующее диалоговое окно, в котором предоставляется возможность установки правильного размера записей (record size) с использо­ванием содержимого файла. Это облегчит последующее редактирование определения записи (описания совокупности ее полей). В прямоугольной рамке окна выводится несколько первых записей файла, а под ней — текущий размер записи. Используя те же клавиши, что и при установке размера заголовка файла, измените ширину рамки так, чтобы первый символ второй записи находился под первым символом первой записи, и затем выдайте подкоманду ОК. Имеется возможность ввода размера записей непосредственно.

После выбора ОК открывается диалоговое окно редактирования определения записи. В нем имеется таблица, состоящая из трех столбцов:

Name                — имя поля;

Туре                 — тип поля;

File Data          — содержимое полей первой записи в соответствии с текущим определением записи.

Наличие столбца File Data существенно облегчает переопределение записи.

Каждая строка отображенной таблицы соответствует одному полю записи. Одна из строк является помаркированной (для перемещения маркера используются традиционные клавиши). Под таблицей выдается следующая информация о записи и о помаркированном поле:

Field                            — номер помаркированного поля из общего числа полей в записи;

Contents                                 — характеристика содержимого помаркированного поля (valid — правильное, invalid — неправильное);

Width                                     — ширина помаркированного поля в байтах;

Decimals                                 — количество десятичных цифр в помаркированном поле, если оно имеет тип Numeric или Float, либо признак n/а (не доступно) в противном случае;

Desired record size                — желаемый размер записи, установленный в предыдущем диалоговом окне;

Current record size                 — текущий размер записи (сначала совпадает с желаемым, а затем может отличаться в результате редактирования определения полей; в итоге нужно обеспечить их совпадение).

Для изменения ширины какого-либо поля помаркируйте его и затем используйте клавиши ← и →. С целью контроля этого процесса следите за содержимым колонки File Data.

Для добавления в определение записи нового поля за помаркированным полем нажмите клавишу Ins. Созданное поле получит имя FIELD_n, где л — его номер.

Для удаления из определения записи помаркированного поля нажмите клавишу Del.

Чтобы изменить последовательность полей в записи, выделите клавишей Space помаркированное поле, переместите его в нужное место клавишами управления курсором, а затем отмените выделение повторным нажатием клавиши Space.

В результате описанных действий содержимое столбца File Data переформатируется. Используя его в качестве образца, можно правильно восстановить определение записи. Редактировать это определение нужно до тех пор, пока в колонке .File Data не окажется корректная информация с учетом следующего:

  содержимое поля должно начинаться с левой его границы, за исключением полей типа Numeric и Float;

   поля типа Numeric и Float могут включать цифры, десятичную точку и знак —, а их содержимое должно быть выровнено по правой границе;

  непустое поле типа Date должно содержать восемь цифр в виде ГГГГММДД, где Г — цифра года, М — цифра месяца, а Д — цифра дня;

  поле типа Memo может содержать только ссылочный номер текстового поля.

После того как размеры полей, их число и последовательность восстановлены или этого сделать не удалось, Вы должны выдать одну из следующих подкоманд для продолжения работы:

Restart         — возобновить восстановление с этапа установки  правильного смещения  первой записи относительно начала файла и длины записи с целью их изменения;

Edit                    — отредактировать определение помаркированного поля;

ОК                     — завершить редактирование определения записи (т.е. заголовка файла в целом) и

перейти к восстановлению записей;

Cancel            — отменить восстановление файла (эквивалентно, как и во всех предыдущих случаях, нажатию клавиши Esc).

При выборе пункта Edit в правой части экрана открывается диалоговое окно, в котором можно изменить:

  имя поля (Field name);

  тип поля, пометив Character, Numeric, Logical, Date, Memo или Float;

  ширину поля (Width), что можно сделать и в предыдущем окне;

  максимальное количество десятичных цифр в поле (Decimals), если поле имеет тип Numeric или Float.

После выполнения требуемых действий выдайте (Ж с целью возврата в окно редактирования определения записи. Для отмены переопределения поля выберите Cancel.

Процесс восстановления записей файла определяется выбранным режимом работы утилиты.

В полностью автоматическом режиме пользователь может только наблюдать за ходом вос­становления в открывшемся окне.

В одном из двух других режимов работы FILEFIX открывает диалоговое окно последовательно для каждой поврежденной записи или для каждой обрабатываемой записи. В середине этого окна выдается очередная запись файла в формате «имя поля» — «содержимое поля». Поврежденные поля отмечаются слева символом ►. В верхней части окна выводится следующая справочная информация:

Damaged fields       — число поврежденных полей обрабатываемой записи;

Amount shifted       — число сдвигов;

Percent complete    — завершенность процесса восстановления файла в процентном выражении;

Recovered records — число уже восстановленных записей. В этом окне можно выдавать следующие подкоманды:

Accept — принять запись (добавить ее в создаваемый восстановленный файл) и продолжить обработку последующих записей. Принять можно не только неразрушенную, но и поврежденную запись. Но в последнем случае все ошибочные символы будут заменены пробелами;

Reject — отвергнуть запись (не добавлять ее в создаваемый восстановленный файл) и продол­жить обработку последующих записей;

Shift — сдвинуть данные с целью обеспечения правильного выравнивания содержимого полей в записи. Для этого в открывшемся диалоговом окне используйте клавиши ← и →, а затем выберите ОК или Cancel;

Mode — изменить режим работы утилиты, который будет использоваться при восстановлении последующих записей (Fully automatic, Review damaged records или Review all records);

Cancel   — отменить восстановление файла (эквивалентно нажатию клавиши Esc).

Подчеркнем, что любую операцию по восстановлению файла в  процессе работы утилиты можно прервать, нажав клавишу Esc.

Ход диалога с FILEFIX сильно зависит от состояния  восстанавливаемого файла и  может отличаться от описанного выше.

После завершения восстановления файла открывается диалоговое окно, в котором дается краткая справка о результатах восстановления. Приводятся имя исходного и результирующего файлов, число восстановленных (Bytes recovered) и отвергнутых (Bytes discarded) байтов. Если Вы не хотите получить полный отчет о проделанной утилитой работе, то выдайте подкоманду No report. По желанию отчет можно отпечатать (подкоманда Printer) или записать в файл для последующего просмотра (подкоманда File).

 

Восстановление файла с электронной таблицей

После выбора файла, подлежащего восстановлению (как описано ранее), открывается диа­логовое окно, в котором следует установить один из следующих режимов работы утилиты:

1)  Attempt recovery of all data (произвести попытку восстановить все данные);

2) Recover cell data only (восстановить данные только в ячейках электронной таблицы). Сначала нужно выбрать первый режим. В нем утилита попытается сделать все возможное, чтобы восстановить файл полностью, включая информацию о размерности электронной таблицы, ширине колонок, диапазонах, заголовках, ограничителях и т.п.

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

После завершения восстановления открывается окно с кратким итогом восстановления и возможностью выдачи отчета.