• Структура файлов в программе Hexplorer
• Понятие формата файла
• Восстановление файлов собственными средствами прикладных программ
• Программы для восстановления файлов
• Полезные ссылки
• Резюме
В этой главе речь пойдет о восстановлении так называемых битых файлов. Файл может быть поврежден при его некорректном сохранении, особенно если вы пытались открыть, а затем сохранить файл, созданный кем-то в более новой версии прикладной программы. Такие файлы можно извлечь с поврежденного носителя. И хотя скопировать их удастся, при попытке открыть «спасенный» файл вы увидите сообщение об ошибке. После восстановления данных со случайно отформатированного диска среди найденных файлов наверняка окажется немало битых. Наконец, подобные файлы найдутся в результате анализа данных, сохраненных операционной системой при проверке и автоматическом исправлении ошибок жесткого диска, – такие файлы имеют расширение CHK.
Считается, что файл – именованная конечная и непрерывная последовательность байтов, несущая некую информацию. Для наших целей (восстановления данных) этого достаточно. В тех файлах, которые приходится восстанавливать на практике, такая последовательность обычно кодирует вполне осмысленную и завершенную информацию, например текст документа или растр (множество точек) изображения.
Напомним, что 1 байт = 8 бит, то есть каждый байт может принимать значения от 0 до 28 = 256 в десятичной (dec) или 28 = FF в шестнадцатеричной (hex) форме записи. Существуют программы, которые позволяют просматривать и изменять содержимое любого файла как простой последовательности байт. Логично называть их байтовыми или двоичными (бинарными) редакторами. Поскольку такие программы обычно показывают значения байтов в шестнадцатеричном виде, за ними закрепилось название «HEX-редакторы».
Если открыть файл в любом HEX-редакторе, мы увидим такое представление его содержимого. О применении HEX-редакторов для восстановления содержимого файла будет сказано в конце главы, они помогут понять структуру файла и то, в чем заключается суть ее повреждений.
Программа ICY Hexplorer – простой, но достаточно функциональный бесплатный редактор двоичных данных. Дистрибутив ее доступен на сайте разработчиков http://hexplorer.sourceforge.net.
Рабочая область окна разделена по вертикали. После открытия файла в левой части рабочей области отображается содержимое файла по байтам в виде их шестнадцатеричных значений (рис. 1.1). В правой части окна те же самые байты интерпретируются как ASCII-значения текстовых символов.
Рис. 1.1. Окно программы Hexplorer – открыт текстовый файл
При этом выделенный фрагмент одновременно подсвечивается в обеих половинах окна. Легко заметить, что означает каждый байт файла, если считать, что им закодирован какой-либо текстовый символ. При рассмотрении текстовых файлов такая интерпретация совершенно справедлива. Команды меню View (Вид) и Structures (Структуры) позволяют интерпретировать содержимое файла иначе, например как точечный рисунок, и просмотреть его в дочернем окне.
Существует множество типов и форматов файлов. В общем виде формат – это сведения о том, как программа должна интерпретировать содержимое файла при его открытии. Иногда формат путают с расширением имени файла, но это совершенно разные понятия. Операционная система может использовать расширение имени файла, чтобы быстро определить, какой программой должен открываться данный файл. Как правило, расширение должно соответствовать формату, но это вовсе не обязательно. Сведения о формате находятся в самом файле – они помещаются в начало последовательности байтов.
Текстовый файл – самый простой формат. Каждый байт текстового файла является кодом определенного символа ASCII (буквы, цифры или знака препинания), а также символов пробела, начала и конца строки. Кроме значений текстовых символов, в текстовом файле действительно больше ничего нет! Структура любых других типов файлов гораздо сложнее.
В качестве примера откроем в HEX-редакторе файл рисунка в формате BMP (рис. 1.2). В самом начале файла дана последовательность 42 4D – в текстовой интерпретации это буквы BM. Затем следует довольно длинная последовательность байтов, в которой преобладают нулевые значения, а уже за ней начинается массив самых разных значений, который продолжается до самого конца файла.
Рис. 1.2. Окно программы Hexplorer – открыт файл рисунка в формате BMP
Можно предположить, что начало файла – какая-то служебная информация, причем самые первые ее байты указывают на формат файла. Лишь затем следует то содержимое, которое программа, работающая с подобными файлами, должна интерпретировать как рисунок.
Примечание
В Интернете существует ресурс, который неоднократно будет упоминаться – «Википедия», или «Свободная энциклопедия». Она содержит большое количество сведений и о форматах файлов, и о многих других понятиях, всю информацию о которых в одну книгу собрать просто невозможно.
В статье говорится, что BMP-файл действительно состоит из четырех частей:
• заголовок файла (BITMAPFILEHEADER). Первое поле заголовка (первые два байта) является сигнатурой – указанием на тип файла;
• заголовок изображения (BITMAPINFOHEADER) – необязательный компонент, он может отсутствовать;
• палитра, которая также может отсутствовать;
• само изображение – каждый байт описывает одну точку рисунка.
Здесь необходимо сделать важный вывод. Очевидно, что искажение или утрата данных, относящихся к первым трем частям, может привести к тому, что файл перестанет открываться предназначенной для этого программой, хотя вся значимая информация в нем осталась цела. В этом случае появится сообщение «Файл имеет неправильный формат или поврежден». Наоборот, утрата или искажение данных самого изображения никак не повлияет на открытие файла, но в открывшемся рисунке выпадут или будут искажены отдельные фрагменты.
В качестве эксперимента можно сделать несколько копий файла, намеренно испортить каждую из них в разных местах с помощью HEX-редактора, а затем сохранить. Открывая эти файлы стандартным средством просмотра Windows или программой Paint, пользователь убедится в справедливости сделанного ранее вывода.
Подобным образом устроен любой файл, хотя спецификация частей файла зависит от его типа. Описания почти всех форматов опубликованы, их можно найти в Интернете. Некоторые из детальных описаний занимают не один десяток страниц. Причем понятное описание форматов файлов Microsoft Office найти труднее всего, но все же существуют и общие положения.
• В начале файла всегда находится его заголовок (header). Сам заголовок тоже обладает внутренней структурой.
– Заголовок начинается сигнатурой, или «магическим числом». Это фрагмент кода, который однозначно дает понять, что это за файл или какой программой он создан. Например, EXE-файл всегда начинается с символов MZ, архив RAR содержит в своем коде сигнатуру RAR.
– Другие поля заголовка могут содержать информацию о размере файла, указывать, на каком байте заканчиваются заголовки и начинаются собственно данные, и так далее.
• В файле могут присутствовать специфические для данного формата заголовки, например для файлов изображений они указывают алгоритм сжатия, глубину цвета, размеры изображения в точках и т. д. Для звуковых файлов такими параметрами будут частота и разрядность оцифровки, число каналов, алгоритм сжатия и пр.
• В некоторых файлах могут присутствовать вспомогательные компоненты: палитра, кодовая таблица, внедренные данные шрифтов, макросов и т. д. В отдельных форматах, наподобие документов Microsoft Office или CorelDRAW, такие данные могут занимать больше места, чем все остальное. Достаточно посмотреть, каков размер «пустого» документа Microsoft Word 2003!
• Собственно уникальные данные документа. Иногда в сложных документах эти данные организованы в виде цепочек, или порций (chunks). В таком случае где-то в заголовках дается ссылка на начало и размер каждой порции.
• Указатель конца файла или контрольная сумма (check sum) подтверждают целостность файла. Они присутствуют далеко не во всех форматах.
Очевидно, любой поврежденный файл можно восстановить или хотя бы извлечь полезную информацию, открыв и отредактировав такой файл HEX-редактором. Если испорчена информация о формате, ее (теоретически) можно воссоздать, а затем открыть файл «штатным» приложением. Если повреждена область самих данных, из файла можно извлечь только то, что осталось.
Восстановление или извлечение полезной информации из поврежденных файлов вручную – трудоемкая задача. По сути она схожа с программированием. Проблема даже не в том, чтобы разобраться в структуре формата, а в том, что для поиска и создания новой записи «нужных» байтов потребуется масса рутинных и утомительных пересчетов, проб и проверок. Поэтому на практике, если существует такая возможность, вначале целесообразно прибегнуть к двум другим способам.
В некоторых прикладных программах изначально заложена возможность тестирования и восстановления поврежденных документов. Эти возможности довольно ограничены, но иногда и их оказывается достаточно. C другой стороны, кому как не разработчикам программ известны все тонкости используемых форматов, а также алгоритмы их создания и восстановления.
Внимание!
Перед любыми попытками восстановления битого файла необходимо сделать несколько его копий. Не стоит экспериментировать с единственным исходным экземпляром!
В программе Microsoft Word предусмотрена функция открытия документов с восстановлением. Кроме того, в полный состав пакета Microsoft Office входит конвертер восстановления текста. По умолчанию он не устанавливается.
Заметим, что есть еще и третья функция, связанная с использованием автосохранения документов Word в процессе работы приложения. Она скорее относится к области резервного копирования: копии документа периодически сохраняются в той же папке, что и открытый документ, либо в папке \Application Data\ Microsoft\Word в профиле пользователя. Если приложение Microsoft Word аварийно завершило работу до корректного сохранения документа пользователем, при очередном его открытии вы увидите панель Восстановление документов, на которой показаны существующие резервные копии файла. Скорее всего, при восстановлении действительно битых файлов эта функция не сработает.
Для установки конвертера восстановления текста необходимо повторно запустить программу установки Microsoft Office.
1. В начальном окне установки выберите пункт Добавить или удалить компоненты. Нажмите кнопку Далее.
2. В окне Выборочная установка установите флажок Расширенная настройка приложений и нажмите кнопку Далее. Появится окно Расширенная настройка.
3. Компонент Конвертер восстановления текста находится в группе Общие средства Office → Конвертеры и фильтры → Конвертеры текстовых файлов. Нажмите стрелку рядом с этим компонентом и выберите пункт Запускать с моего компьютера.
4. Следуя указаниям мастера, завершите установку выбранных компонентов.
5. После этого запустите программу Word. Зайдите в окно настроек (меню Сервис → Параметры) и на вкладке Общие установите флажок Подтверждать преобразование при открытии. Сохраните настройки.
Теперь есть два пути. Для начала воспользуйтесь встроенной функцией восстановления документа.
1. В меню Файл выберите команду Открыть. Появится окно Открытие документа.
2. Выберите в нем файл для восстановления.
3. Нажмите на стрелку рядом с кнопкой Открыть и выберите команду Открыть и восстановить (рис. 1.3).
Рис. 1.3. Открытие документа с восстановлением
Возможно, документ успешно откроется. Открыв документ, сохраните его под другим именем. Еще лучше скопировать все содержимое и вставить его в новый документ. Однако эксперименты показывают, что таким образом можно исправить только самые незначительные дефекты. Чуть большими возможностями обладает конвертер восстановления текста.
1. В окне Открытие документа в раскрывающемся списке Тип файла выберите параметр Восстановление текста из любого файла.
2. Откройте нужный файл. В процессе открытия может появиться дополнительное окно Преобразование файла (рис. 1.4).
Рис. 1.4. Окно Преобразование файла
3. Выберите в этом окне вариант Восстановление текста из любого файла и нажмите кнопку OK.
При таком восстановлении будет утеряно исходное форматирование документа – вместо него получится чистый текст (plain text). Тем не менее и эта функция срабатывает далеко не всегда. В таком случае следует восстановить документ специальными программами от сторонних разработчиков.
В популярном архиваторе WinRAR (http://www.rarlab.com) заложена функция восстановления поврежденных архивов. Эта программа может восстанавливать архивы форматов RAR и ZIP. Тип архива WinRAR пытается определить автоматически по сигнатуре файла и по его расширению, но пользователь может указать тип архива и самостоятельно.
Формат RAR предусматривает внесение в архив избыточной информации – так называемой информации для восстановления сразу при его создании. Для этого при добавлении файлов в архив в окне Имя и параметры архива необходимо установить флажок Добавить информацию для восстановления (рис. 1.5). По умолчанию этот флажок снят. На вкладке Дополнительно задается относительный размер информации для восстановления в процентах от общего размера архива.
Рис. 1.5. Создание архива и добавление информации для восстановления
Добавление такой информации неизбежно увеличивает размер архива, но этой мерой предосторожности пользуются не всегда. Как правило, при сжатии файлов на первое место выходит минимальный размер получаемого архива. Создатели программы рекомендуют добавлять информацию для восстановления в архивы, которые предполагается записывать на гибкие диски или при сжатии особо ценных данных.
Восстановление архива происходит в два этапа. Сначала в архиве находится блок информации для восстановления. Если такой блок в архиве присутствует, поврежденная часть данных невелика по размеру и непрерывна, то шансы на успешное восстановление велики. В результате архиватор создает новый файл с именем fixed.arcname.rar, где arcname – имя исходного поврежденного архива.
Если в испорченном архиве нет информации для восстановления или повреждение очень серьезное, то делается попытка восстановления по другому алгоритму. Реконструируется лишь структура архива. Создается новый архив с именем rebuilt. arcname.rar, где arcname – имя исходного архива. Из этого восстановленного архива удается извлечь неповрежденные файлы. Из простых архивов успешно извлекаются все уцелевшие данные. Из непрерывного (solid) архива обычно удается восстановить только файлы, располагавшиеся в начале архива до места повреждения.
Когда в процессе обычного открытия архива программа WinRAR обнаруживает в нем ошибки, выводится окно с диагностическими сообщениями (рис. 1.6). По содержанию этих сообщений уже можно судить о характере и степени повреждения файла.
Рис. 1.6. Диагностические сообщения программы WinRAR
Для восстановления выделите архив в окне программы WinRAR и нажмите кнопку Исправить или выберите команду меню Операции → Восстановить архив(ы). Последующие диалоги зависят от характера повреждений и сохранности отдельных компонентов файла.
В частности, при повреждении заголовка потребуется указать, каков формат исходного архива: RAR или ZIP, а также является ли архив непрерывным. В ходе операции восстановления программа может спросить у пользователя, нужно ли считать файлом найденный в архиве элемент: Подозрительный элемент возможное имя файла>. Добавить в архив: Да/Нет/Все. Ответьте Да, чтобы добавить этот элемент в fixed.arcname.rar.
Для устранения неисправностей архивов RAR программа WinRAR представляется оптимальным и основным средством. Для архивов ZIP она также дает неплохие результаты, но здесь конкуренцию составляют многочисленные специализированные программы.
Базы данных, с которыми работают программы семейства 1С: Предприятие, состоят из множества отдельных файлов. Часть из них несет сведения о конфигурации, а другие (файлы с расширением DBF) являются изменяемыми файлами базы данных. Если ошибка затронула только конфигурационные файлы, проще всего не восстанавливать базу, а просто переписать эти файлы из дистрибутива конфигурации или любой резервной копии.
Повреждение базы чаще всего происходит в результате системных сбоев, внезапного отключения питания компьютеров или возникновения проблем с локальной сетью. Основной и прямой путь восстановления базы – тестирование и исправление ее средствами программы 1С, запущенной в режиме Конфигуратора. Главная особенность подобного восстановления в том, что Конфигуратор использует логику построения базы и некоторые данные могут быть восстановлены по связанным с ними записям в других, неповрежденных файлах.
Разумеется, перед любыми попытками восстановления следует создать резервную копию базы данных. Лучше всего сделать это простым копированием папки с базой в другой каталог.
1. Откройте программу 1С в режиме конфигуратора.
2. Запустите проверку открытой базы (меню Администрирование → Тестирование и исправление).
3. При наличии свежей резервной копии можно сразу приступать к исправлению: выберите вариант Тестирование и исправление. В ходе тестирования показываются обнаруженные ошибки базы. Обратите внимание на имена файлов. При исправлении, в случае разночтений, программа может попросить указать, на основании каких данных следует восстанавливать конкретную запись или же ее следует удалить вообще.
4. После восстановления откройте базу в монопольном режиме и проверьте корректность записей и итогов. Вполне возможно, что какие-то записи придется исправить или добавить вручную.
Восстановление поврежденных баз возможно почти всегда. Дело лишь в числе утраченных записей. Восстановление отдельных файлов специальными программами практически не требуется – средства Конфигуратора 1С достаточно эффективно восстанавливают структуру файлов базы данных. В программу заложены средства архивирования, и другие способы резервного копирования всегда есть в распоряжении. Восстановление из последнего архива может оказаться быстрее тестирования и восстановления даже с учетом повторного ввода данных, появившихся с момента последнего архивирования.
Специализированные программы созданы для восстановления файлов почти любого известного формата. По числу программ на первом месте, безусловно, оказываются документы Microsoft Office. Простой поиск в Интернете выдает около трех десятков названий утилит для восстановления документов Word или таблиц Excel.
Работа подобных программ основана на том, что в файле ищутся присущие этому формату структуры (заголовки, таблицы и т. д.). Если структура найдена, она анализируется на предмет допустимости содержащихся в ней записей. Правила проверки известны, они прямо вытекают из описания формата. Если запись явно не соответствует допустимому или ожидаемому значению, то она исправляется. Точно так же могут генерироваться отсутствующие или неполные структуры. Конкретные алгоритмы работы у всех программ свои собственные, поэтому разными оказываются и результаты их работы в реальных ситуациях.
В отношении программ восстановления действует то же правило, что и в отношении антивирусов: чем больше приложений будет использовано в данном конкретном случае, тем выше шансы на успех. Однако, если одна из программ однажды помогла там, где другие были бессильны, это вовсе не означает, что она лучше остальных восстановит и любой другой битый файл. К счастью, почти все подобные программы доступны в условно-бесплатных (trial или shareware) и демоверсиях. Ограничение обычно касается сохранения восстановленных данных либо максимально допустимого объема восстанавливаемой информации.
Создайте несколько копий поврежденного файла – для каждой попытки свой экземпляр. Если с первого раза восстановление удалось – хорошо. Если же нет, следует применить одно средство за другим. Возможно, какая-то очередная программа сможет восстановить текст или данные таблицы. В таком случае остается лишь приобрести ее или зарегистрировать иным образом.
Здесь уместно небольшое экономическое отступление. В работе с компьютером в отдельно взятой семье или фирме программа восстановления, скорее всего, понадобится однократно. После потери и вызванных ею сложностей пользователи станут осмотрительней и будут регулярно делать резервные копии. Получается, что цена лицензии равна цене восстановления от одного до десятка файлов. Цена лицензий составляет от десятка до нескольких сотен долларов. Видимо, лучше сначала попробовать применить все демоверсии, которые можно найти, а затем обратить внимание на цены.
Для тех, кто занимается восстановлением информации профессионально, оправдан и иной подход. Например, пакет Office recovery – почти универсальное и эффективное средство. Лицензия окупится довольно быстро, ведь восстановление данных – всегда востребованная и неплохо оплачиваемая услуга.
Далее будут рассмотрены несколько программ. Выбор их почти случаен, так как одна из главных задач книги – показать программы разного класса и подходы к работе с такими программами. Если первая программа – «автомат» для начинающего пользователя, вторая – «полуавтомат» с возможностью ручной доводки результата, то третья – любительская разработка, требующая определенных навыков от того, кто ей пользуется.
Компания Recoveronix Ltd. предлагает более 30 утилит для автоматического восстановления файлов большинства распространенных форматов. С официального сайта компании (http://www.officerecovery.com/office/) можно скачать как отдельные приложения, так и их пакет под общим названием Office recovery. Чтобы дать представление о возможностях пакета, далее перечислены некоторые входящие в него программы.
• Recovery for Word, Recovery for Excel, Recovery for Outlook Express, Recovery for Outlook, Recovery for PowerPoint, Recovery for Publisher, Recovery for Access – восстановление документов Microsoft Office.
• PDFRecovery, PhotoshopRecovery – восстановление документов Adobe.
• PixRecovery – восстановление графических файлов BMP, GIF, TIFF, JPEG.
• ZipRecovery – восстановление архивов ZIP.
• В состав пакета включены средства восстановления документов Microsoft Works, WordPerfect, многих форматов баз данных.
Кроме перечисленных инструментов для восстановления битых файлов, в пакет Office recovery входят программы для операций иного рода. Восстановлению и извлечению информации с поврежденных носителей посвящены следующие главы. Здесь же просто названы такие компоненты пакета.
• MediaHeal for CD and DVD, MediaHeal for Diskettes, MediaHeal for Flash, MediaHeal for Hard Drives, MediaHeal for Removable Disks – средства восстановления данных с различных носителей.
• FreeUndelete – утилита для восстановления случайно удаленных данных.
При установке пакета предлагается выбрать необходимые приложения. Каждое из них устанавливается в отдельную папку и является вполне самостоятельным. Все окна приложений построены по одному образцу. Интеграция заключается в наличии в окне каждого приложения пункта меню Toolbox (Инструменты), под которым раскрывается большой список остальных приложений.