Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_Информатика-344 готовый.doc
Скачиваний:
47
Добавлен:
30.04.2019
Размер:
4.96 Mб
Скачать

§10.6. Архивация данных

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

Для их создания можно просто скопировать файлы, но при этом понадобится большое количество дополнительных носителей информации (например, для копирования файлов с жесткого диска размером 140 МБ необходимо 100 дискет стандартного формата 3,5”, каждая из которых имеет емкость 1,4 МБ). В таком огромном количестве дискет даже разобраться довольно сложно, поэтому весьма значительной будет трудоемкость создания и обновления архива. Конечно, можно использовать носители больших объемов (например, компакт-диски объемом 650 или 700 МБ). Однако зачастую и этого уже недостаточно, так как объем используемой информации давно превысил эти пределы.

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

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

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

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

Архиватор – это специальная программа, позволяющая работать с архивными файлами, то есть запаковывать (сжимать) исходные файлы в архив и распаковывать (восстанавливать) их из архивов.

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

Архивный файл (архив) – это специальный файл, в котором по определенным алгоритмам сжатия упакован один или несколько различных объектов (папки, текстовые или табличные документы, рисунки, фотографии, программы или другие файлы) с целью более рационального размещения на диске (или для передачи другим пользователям, в том числе по каналам связи).

Архивный файл занимает в несколько раз меньше места (иногда в 10 – 100 раз!), поэтому может быть свободно размещен на носителе небольшого объема (например, дискете) или быстрее отправлен по электронной почте. Именно по этой причине архивы широко используются для передачи информации в сети Интернет, так как благодаря сжатию информации повышается скорость ее передачи.

Как и любой другой файл, в файловой системе компьютера каждый архив имеет строго заданный тип (расширение). Наиболее часто встречаются следующие архивные файлы: .zip, .rar, .cab, .arj, .lzh, .ice, .zoo и др. Для каждого из них существуют свои архиваторы (Zip, Rar, Arj, Lha, Ice, Zoo и др.), однако есть и универсальные программы, работающие со многими типами архивов (например, утилита WinRar).

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

  • алгоритмы сжатия без потерь, при использовании которых можно восстановить данные без малейших изменений;

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

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

1) Алгоритм Хаффмана (Huffman) ориентирован на сжатие не связанных между собой последовательностей байт. Он основан на том, что некоторые символы из стандартного (256-символьного) набора кодовой таблицы ASCII могут встречаться в произвольном тексте чаще среднего периода повтора, а другие, наоборот, реже. Следовательно, если для записи распространенных символов использовать короткие последовательности бит (длиной меньше 1 байта), а для записи редких символов – более длинные, то суммарный объем файла уменьшится. Например, в русском тексте очень часто встречаются буквы «а», «е», «и», «о» (объем каждой буквы равен 8 бит), поэтому их можно заменить цифрами «0», «1», «2», «3», для кодирования которых достаточно 2 бит. Следовательно, коэффициент сжатия будет равен 25% (или сжатие в 4 раза). Конечно, общий коэффициент сжатия будет больше, так как необходимо кодировать и другие символы, на которые потратится более 2 бит.

2) Алгоритм Лемпеля-Зива (Lempel-Ziv) ориентирован на сжатие связанных между собой и повторяющихся последовательностей байт (любые виды текстов и графических изображений). Классический алгоритм LZ77 формулируется следующим образом: «если в прошедшем ранее выходном потоке уже встречалась подобная последовательность байт, причем запись о ее длине и смещении от текущей позиции короче, чем сама эта последовательность, то в выходной файл записывается ссылка на нее (смещение, длина), а не сама последовательность». Например, фраза из 24 символов «КОЛОКОЛ_ОКОЛО_КОЛОКОЛЬНИ» закодируется в последовательность из 13 символов: «КОЛО(-4,3)_(-5,4)О_(-14,7)ЬНИ». Следовательно, коэффициент сжатия будет около 54% (или сжатие в 1,85 раза). Аналогично сжимаются изображения – большие области одного цвета заменяются ссылкой (цвет, длина). Поэтому графические файлы очень хорошо сжимаются (в десятки – сотни раз)!

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

При выборе инструмента для работы с упакованными файлами (архивами) следует учитывать два фактора:

  • эффективность – оптимальный баланс между экономией дисковой памяти и производительностью работы;

  • совместимость – возможность обмена данными с другими пользователями.

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

  • коэффициент сжатия, отражающий отношение размера архивного (сжатого) файла к исходному:

Ксжатиясжатыйисходный

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

Куменьшенияисходныйсжатый

Кроме используемой программы (со своим методом сжатия) степень сжатия также зависит и от типа исходного файла. Наиболее хорошо сжимаются графические и текстовые файлы (Ксжатия может достигать 5 – 40 %), меньше сжимаются файлы исполняемых программ и загрузочных модулей (Ксжатия порядка 60 – 90 %), а архивные файлы практически не сжимаются. Это объясняется тем, что множество программ-архиваторов используют для сжатия варианты алгоритма LZ77, суть которого заключается в особом кодировании повторяющихся последовательностей байт (символов). Частота встречаемости таких повторов наиболее высока в текстах и точечной графике, но практически сведена к нулю в архивах.

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

В настоящее время существует несколько десятков архиваторов, которые отличаются перечнем функций и параметрами работы, однако лучшие из них имеют примерно одинаковые характеристики (например, WinRar и WinZip, которые работают в среде Windows, имеют удобный интерфейс и множество сервисных функций). Из числа наиболее популярных можно выделить зарубежные программы Arj, Hyper, Ice, Lha, Рак, Pkpak, Zip и Zoo, а также российские разработки Ain и Rar. В состав операционных систем DOS и Windows входит утилита Expand, применяемая для распаковки файлов программных продуктов корпорации Microsoft.

Обычно упаковка и распаковка файлов выполняются одной и той же программой, но в некоторых случаях это осуществляется разными программами (например, утилита PkZip производит упаковку файлов, а PkUnzip – их распаковку). Многие архиваторы производят распаковку файлов, выгружая их на диск, но имеются и такие, которые предназначены для создания упакованного исполняемого модуля (программы). В результате такой упаковки создается программный файл с тем же именем и расширением, который при загрузке в оперативную память самораспаковывается и сразу запускается (к числу таких архиваторов относятся программы PkLite, LzExe, Unp).

Также архиваторы различаются улучшенными реализациями алгоритмов сжатия, что соответственно влияет на повышение степени сжатия исходных объектов. Так, некоторые архиваторы (например, Rar) дополнительно включают средство создания непрерывных архивов (solid archive), при использовании которого (только в своем формате .rar) может быть достигнута более высокая степень сжатия (плотнее на 10 – 50 %), чем дают обычные методы (особенно, если упаковывается значительное количество небольших файлов однотипного содержания). Создается особая структура организации архива с повышенной степенью сжатия – в таких архивах все файлы сжимаются как один поток данных (областью поиска повторяющихся последовательностей символов является вся совокупность файлов, загруженных в архив).

Непрерывные архивы предпочтительнее использовать в трех случаях:

  • предполагается редко обновлять архив;

  • планируется чаще распаковывать весь архив, нежели извлекать из него один или несколько файлов;

  • нужно достичь более плотной степени сжатия, даже в ущерб скорости упаковки.

Однако у непрерывной архивации есть три недостатка:

  • обновление непрерывных архивов (добавление файлов в уже существующий архив или их удаление из него) происходит медленнее, чем обновление обычных архивов;

  • извлечение отдельных файлов из середины или конца непрерывного архива (приходится анализировать все предыдущие заархивированные файлы) происходит медленнее, чем извлечение из обычного архива. При этом скорость распаковки всех или нескольких первых файлов практически равна скорости распаковки обычного архива;

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

Некоторые архиваторы (например, Rar) поддерживают (только в своем формате .rar) специальный тип избыточной информации для восстановления, наличие которой позволяет восстановить данные из архива даже в случае его физического повреждения (например, из-за сбоя гибкого диска или вследствие любых других причин). Эта информация может содержать до 524 288 (219) секторов для восстановления (до 256 МБ данных). Если поврежденные данные составляют непрерывный участок, то каждый сектор восстановления может восстановить 512 байт поврежденной информации. В случае многократного повреждения это значение может снизиться. Архивы других форматов, в том числе .zip, не могут содержать такую информацию.

Некоторые архиваторы (например, Rar) позволяют создавать самораспаковывающиеся (SelF-eXtractingSFX) архивы, к которым присоединен исполняемый модуль распаковки, позволяющий извлекать файлы простым запуском архива как обычной программы (без использования самого архиватора). Архивы такого типа обычно создаются в формате программных файлов (.exe). Вместе с тем, можно работать с SFX-архивом точно так же, как и с любым другим, поэтому если вы не хотите запускать SFX-архив (например, когда не можете гарантировать, что в нем нет вирусов), то для просмотра или извлечения его содержимого можно использовать программу-архиватор (например, WinRar).

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

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