logo
Курс лекций по Информатике-2008-часть 2

Создание архивов

При эксплуатации персональных компьютеров по самым различным причинам возможны порча или потеря информации на магнитных дисках. Это может произойти из-за физической порчи магнитного диска, неправильной корректировки или случайного уничтожения файлов, разрушения информации компьютерным вирусом и т.д. Для того чтобы уменьшить потери в таких ситуациях, следует иметь архивные копии используемых файлов и систематически обновлять копии изменяемых файлов. Для хранения архивов данных можно использовать внешние запоминающие устройства большой емкости, которые дают возможность легко скопировать жесткий диск (например, стримеры, «Арвид» и др.) Для копирования файлов можно, разумеется, использовать следующие средства:

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

Более удобно для создания архивных копий использовать специально разработанные программы архивации файлов, которые сжимают информацию. При архивировании степень сжатия файлов сильно зависит от их формата. Некоторые форматы данных (графические, Page Maker и др.) имеют упакованные разновидности, при этом сжатие производится создающей исходные файл программы, однако лучшие архиваторы способны поджать и их. Совсем другая картина наблюдается при архивации текстовых файлов, файлов PostScript и им подобные (текстовые файлы обычно сжимаются на 50-70 процентов, а программы на 20-30).

Наиболее популярные архиваторы ARJ, LHA, RAR и PKZIP (имеет отдельный распаковщик PKUNZIP).

Большинство из этих программ не надо специально покупать, так как они предлагаются как программы условно-бесплатные (Shareware) или свободного распространения (Freeware). Хорошую помощь при архивации программ (поскольку каждый пользователь имеет любимый архиватор) могут оказать вам специальные «оболочки» (так называемые PackerShells), такие как SHEZ или GUS, которые самостоятельно определяют компрессированный файл и помогают его распаковать (так называемый процесс разархивации); аналогичные средства имеются в современных оболочках общего назначения (Norton Commander, Dos Navigator и др.). Подобные оболочки обычно лишь управляют имеющимися программами-архиваторами общего пользования. Архиватор RAR имеет собственную встроенную оболочку. Принцип работы архиваторов основан на поиске в файле «избыточной» информации и последующем ее кодировании с целью получения минимального объема. Самым известным методом архивации файлов является сжатие последовательностей одинаковых символов. Например, внутри вашего файла находятся последовательности байтов, которые часто повторяются. Вместо того чтобы хранить каждый байт, фиксируется количество повторяющихся символов и их позиция. Для наглядности приведем следующий пример. Упаковываемый файл занимает 15 байт и состоит из следующей последовательности символов:

B B B B B L L L L L A A A A A

В шестнадцатеричной системе^

42 42 42 42 42 4С 4С 4С 4С 4С 41 41 41 41 41

Архиватор может представить этот файл в виде (шестнадцатеричном):

01 05 42 06 05 4С 0А 05 41

Эти последовательности можно интерпретировать следующим образом: с первой позиции 5 раз повторяется знак B, с шестой позиции 5 раз повторяется знак L и с позиции 11 повторяется 5 раз знак А.

Согласитесь, очень простая демонстрация алгоритма архивации. Очевидно, что для хранения файла в его последней форме требуется лишь 9 байт - меньше на 6 байт.

Описанный метод является простым и очень эффективным способом сжатия файлов. Однако он не обеспечивает большой экономии объема, если обрабатываемый текст содержит небольшое количество последовательностей повторяющихся символов. Более изощренный метод сжатия данных, используемый в том или ином виде практически любым архиватором – это так называемый оптимальный префиксный код, и в частности, алгоритм Хаффмана, или кодирование символами переменной длины. Код переменной длины позволяет записывать наиболее часто встречающиеся символы и фразы всего лишь несколькими битами, в то время как редкие символы и фразы будут записаны более длинными битовыми строками. Например, анализируя любой английский текст, можно установить, что буква Е встречается гораздо чаще, чем Z, a X и Q относятся к наименее встречающимися. Такими образом, используя специальную таблицу соответствия, можно закодировать каждую букву Е меньшим числом бит, используя более длинный код для более редких букв, тогда как в обычных кодировках любому символу соответствует битовая последовательность фиксированной длины (как правило, кратной байту).

Популярные архиваторы ARJ, PAK, LHARC, PKZIP работают на основе алгоритма Лемпела-Зива. Эти архиваторы классифицируются как адаптивные словарные кодировщики, в которых текстовые строки заменяются указателями на идентичные им строки, встречающиеся ранее в тексте. Например, все слова этой книги могут быть представлены в виде номеров страниц и номеров строк некоторого словаря. Важнейшей отличительной чертой этого алгоритма является использование грамматического разбора предшествующего текста с разложением его на фразы, которые записываются в словарь. Указатели позволяют делать ссылки на любую фразу в окне установленного размера, предшествующем текущей фразе. Этот размер определяет границы поиска соответствия; при его увеличении возрастает плотность упаковки, но снижает скорость работы программы. Если соответствие найдено, текущая фраза заменяется указателем на ее предыдущее вхождение.

Программы-архиваторы позволяют не только сэкономить место на архивных дискетах, но и объединять группы совместно используемых файлов в один архивный файл, что заметно облегчает ведение архивов. К основным функциям архиваторов относятся:

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