3. СОЗДАНИЕ АРХИВОВ
При эксплуатации персональных компьютеров по самым различным
причинам возможны порча или потеря информации на магнитных дисках. Это
может произойти из-за физической порчи магнитного диска, неправильной
корректировки или случайного уничтожения файлов, разрушения информации
компьютерным вирусом и т.д. Для того чтобы уменьшить потери в таких
ситуациях, следует иметь архивные копии используемых файлов и
систематически обновлять копии изменяемых файлов. Для хранения архивов
данных можно использовать внешние запоминающие устройства большой
емкости, которые дают возможность легко скопировать жесткий диск
(например, магнитооптика, стримеры и др.).
Для создания архивных копий следует использовать специально
разработанные программы архивации файлов, которые сжимают информацию.
При архивировании степень сжатия файлов сильно зависит от их формата.
Некоторые форматы данных (графические, Page Maker и др.) имеют
упакованные разновидности, при этом сжатие производится создающей
исходный файл программой, однако лучшие архиваторы способны поджать и
их. Совсем другая картина наблюдается при архивации текстовых файлов,
файлов PostScript и им подобных (текстовые файлы обычно сжимаются на
50-70%, а программы на 20-30%).
Наиболее популярны архиваторы WINRAR и WINZIP.
Принцип работы архиваторов основан на поиске в файле "избыточной"
информации и последующем ее кодировании с целью получения минимального
объема. Самым известным методом архивации файлов является сжатие
последовательностей одинаковых символов. Например, внутри вашего файла
находятся последовательности байтов, которые часто повторяются. Вместо
того чтобы хранить каждый байт, фиксируется количество повторяющихся
символов и их позиция. Для наглядности приведем следующий пример.
Упаковываемый файл занимает 15 байт и состоит из следующей
последовательности символов:
BBBBBLLLLLAAAAA
В шестнадцатиричной системе
42 42 42 42 42 4С 4С 4С 4С 4С 41 41 41 41 41
Архиватор может представить этот файл в виде (шестнадцатиричном):
01 05 42 06 05 4С OA 05 41
Эти последовательности можно интерпретировать следующим образом:
с первой позиции 5 раз повторяется знак В, с шестой позиции 5 раз
повторяется знак L и с позиции 11 повторяется 5 раз знак А.
Согласитесь, очень простая демонстрация алгоритма архивации.
Очевидно, что для хранения файла в его последней форме требуется лишь
9 байт - меньше на 6 байт.
Описанный метод является простым и очень эффективным способом
сжатия файлов. Однако он не обеспечивает большой экономии объема, если
обрабатываемый текст содержит небольшое количество последовательностей
повторяющихся символов. Более изощренный метод сжатия данных,
используемый в том или ином виде практически любым архиватором, - это
так называемый оптимальный префиксный код, и в частности, алгоритм
Хаффмана, или кодирование символами переменной длины. Код переменной
длины позволяет записывать наиболее часто встречающиеся символы и
фразы всего лишь несколькими битами, в то время как редкие символы и
фразы будут записаны более длинными битовыми строками. Например,
анализируя любой английский текст, можно установить, что буква Е
встречается гораздо чаще, чем Z, а Х и Q относятся к наименее
встречающимся. Таким образом, используя специальную таблицу
соответствия, можно закодировать каждую букву Е меньшим числом бит,
используя более длинный код для более редких букв, тогда как в обычных
кодировках любому символу соответствует битовая последовательность
фиксированной длины (как правило, кратной байту).
Популярные архиваторы WINRAR, WINZIP работают на основе алгоритма
Лемпела-Зива. Эти архиваторы классифицируются как адаптивные словарные
кодировщики, в которых текстовые строки заменяются указателями на
идентичные им строки, встречающиеся ранее в тексте. Например, все
слова этой книги могут быть представлены в виде номеров страниц и
номеров строк некоторого словаря. Важнейшей отличительной чертой этого
алгоритма является использование грамматического разбора
предшествующего текста с разложением его на фразы, которые
записываются в словарь. Указатели позволяют делать ссылки на любую
фразу в окне установленного размера, предшествующем текущей фразе.
Этот размер определяет границы поиска соответствия; при его увеличении
возрастает плотность упаковки, но снижается скорость работы программы.
Если соответствие найдено, текущая фраза заменяется указателем на ее
предыдущее вхождение.
Программы-архиваторы позволяют не только сэкономить место на
архивных дискетах, но и объединять группы совместно используемых
файлов в один архивный файл, что заметно облегчает ведение архивов. К
основным функциям архиваторов относятся:
- архивация указанных файлов или всего текущего каталога;
- извлечение отдельных или всех файлов из архива в текущий
каталог (или в указанный каталог);
- просмотр содержимого архивного файла (состав, свойства
упакованных файлов, их каталожная структура и т.д.);
- проверка целостности архивов;
- восстановление поврежденных архивов;
- ведение многотомных архивов;
- вывод файлов из архива на экран или на печать.
Все программы-архиваторы, как правило, снабжены подробными
комментариями, поэтому их применение не вызывает особых затруднений.
Кроме того, в программах-архиваторах предусмотрены дополнительные
функции по защите информации в архивном файле с помощью пароля,
который используется как ключ алгоритма шифрования данных в архиве.