Архивация - это сжатие, уплотнение, упаковка информации с целью ее более рационального размещения на внешнем носителе (диске или дискете). Архиваторы - это программы, реализующие процесс архивации, позволяющие создавать и распаковывать архивы.
Необходимость архивации связана с резервным копированием информации на диски и дискеты с целью сохранения программного обеспечения компьютера и защиты его от порчи и уничтожения (умышленного, случайного или под действием компьютерного вируса). Чтобы уменьшить потери информации, следует иметь резервные копии всех программ и файлов.
Архивирование используют при хранении и переносе информации на дискетах, жестких и лазерных дисках. Например, дистрибутивы компьютерных программ на дискетах или CD дисках, как правило, содержат архивированные файлы. Новые компьютерные программы, например, из пакета MS Office XP, позволяют работать с архивированными файлами без их распаковки, с жёсткого диска или с дискеты. Для упаковки файлов используют служебные программы-архиваторы. Наиболее распространены: архиваторы ARJ, WinZip, WinRar. Процесс архивации характеризуют степенью сжатия файла и скоростью работы.
Программы-упаковщики (архиваторы) позволяют за счет специальных методов сжатия информации создавать копии файлов меньшего размера и объединять копии нескольких файлов в один архивный файл. Это даёт возможность на дисках или дискетах разместить больше информации, то есть повысить плотность хранения информации на единицу объёма носителя (дискеты или диска).
Кроме того, архивные файлы широко используются для передачи информации в Интернете и по электронной почте, причем благодаря сжатию информации повышается скорость её передачи. Это особенно важно, если учесть, что быстродействие модема и канала связи (телефонной линии) намного меньше, чем процессора и жесткого диска.
Работа архиваторов основана на том, что они находят в файлах повторяющиеся участки и пробелы, помечают их в архивном файле и затем при распаковке восстанавливают по этим отметкам исходные файлы.
Программы-упаковщики (или архиваторы) позволяют помещать копии файлов в архив и извлекать файлы из архива, просматривать оглавление архива и тестировать его целостность, удалять файлы, находящиеся в архиве, и обновлять их, устанавливать пароль при извлечении файлов из архива и др. Разные программы архивации отличаются форматом архивных файлов, скоростью работы, степенью сжатия, набором услуг (полнотой меню для пользователя), удобством пользования (интерфейсом), наличием помощи, собственным размером.
Программы-архиваторы позволяют создавать и такие архивы, для извлечения из которых содержащихся в них файлов не требуются какие - либо программы, так как сами архивные файлы могут содержать программу распаковки. Такие архивные файлы называются самораспаковывающимися.
Самораспаковывающийся архивный файл - это загрузочный, исполняемый модуль, который способен к самостоятельной разархивации находящихся в нем файлов без использования программы - архиватора.
Самораспаковывающийся архив получил название SFX - архив (SelF - eXtracting).
Степень сжатия файлов характеризуется коэффициентом Кс, определяемым как отношение объема сжатого файла Vc к объему исходного файла Vо, выраженное в процентах (в некоторых источниках используется обратное соотношение):
Кс=(Vc/Vo)*100%
Степень сжатия зависит от используемой программы, метода сжатия и типа исходного файла.
Наиболее хорошо сжимаются файлы графических образов, текстовые файлы и файлы данных, для которых коэффициент сжатия может достигать 5 - 40%, меньше сжимаются файлы исполняемых программ и загрузочных модулей Кс = 60 - 90%. Почти не сжимаются архивные файлы. Это нетрудно объяснить, если знать, что большинство программ-архиваторов используют для сжатия варианты алгоритма LZ77 (Лемпеля-Зива), суть которого заключается в особом кодировании повторяющихся последовательностей байт. Частота встречаемости таких повторов наиболее высока в текстах и точечной графике и практически сведена к нулю в архивах.
Все алгоритмы сжатия данных делятся на:
1) алгоритмы сжатия без потерь, при использовании которых данные на приемной восстанавливаются без малейших изменений;
2)алгоритмы сжатия с потерями, которые удаляют из потока данных информацию, незначительно влияющую на суть данных, либо вообще невоспринимаемую человеком (такие алгоритмы сейчас разработаны только для аудио- и видео- изображений).
Преимущество отдается естественно, первой группе алгоритмов.
Существует два основных метода архивации без потерь:
- алгоритм Хаффмана (англ. Huffman), ориентированный на сжатие последовательностей байт, не связанных между собой,
- алгоритм Лемпеля-Зива (англ. Lempel, Ziv), ориентированный на сжатие любых видов текстов, то есть использующий факт неоднократного повторения "слов" - последовательностей байт.
Практически все популярные программы архивации без потерь (ARJ, RAR, ZIP и т.п.) используют объединение этих двух методов - алгоритм LZH.
Алгоритм Хаффмана. Алгоритм сжатия ориентирован на неосмысленные последовательности символов какого-либо алфавита. Необходимым условием для сжатия является различная вероятность появления этих символов (и чем различие в вероятности больше, тем больше степень сжатия).Алгоритм основан на том факте, что некоторые символы из стандартного 256-символьного набора в произвольном тексте могут встречаться чаще среднего периода повтора, а другие, соответственно, - реже. Следовательно, если для записи распространенных символов использовать короткие последовательности бит, длиной меньше 8, а для записи редких символов - длинные, то суммарный объем файла уменьшится.
Алгоритм Лемпеля-Зива напротив, основан на корреляциях между расположенными рядом символами алфавита (словами, управляющими последовательностями, заголовками файлов фиксированной структуры). Классический алгоритм Лемпеля-Зива - LZ77, названный так по году своего опубликования следующим образом: <если в прошедшем ранее выходном потоке уже встречалась подобная последовательность байт, причем запись о ее длине и смещении от текущей позиции короче чем сама эта последовательность, то в выходной файл записывается ссылка (смещение, длина), а не сама последовательность>. Так фраза <КОЛОКОЛ_ОКОЛО_КОЛОКОЛЬНИ> закодируется как <КОЛО(-4,3)_(-5,4)О_(-14,7)ЬНИ>.
Zip
Zip — популярный формат сжатия данных и архивации файлов. Файл ZIP, чаще всего имеющий расширение .zip, хранит в сжатом или несжатом виде один или несколько файлов, которые можно из него извлечь путём распаковки с помощью специальной программы.
Сжатие данных — процедура перекодирования данных, производимая с целью уменьшения их объёма. Применяется для более рационального использования устройств хранения и передачи данных.
Сжатие бывает без потерь (когда возможно восстановление исходных данных без искажений) или с потерями (восстановление возможно с незначительными искажениями). Сжатие без потерь используется при обработке компьютерных программ и данных. Сжатие с потерями обычно применяется для сокращения объёма звуковой, фото- и видеоинформации, оно значительно эффективнее сжатия без потерь.
Сжатие основано на устранении избыточности информации, содержащейся в исходных данных. Примером избыточности является повторение в тексте фрагментов (например, слов естественного или машинного языка). Подобная избыточность обычно устраняется заменой повторяющейся последовательности более коротким значением (кодом). Другой вид избыточности связан с тем, что некоторые значения в сжимаемых данных встречаются чаще других, при этом возможно заменять часто встречающиеся данные более короткими кодами, а редкие — более длинными (вероятностное сжатие). Сжатие данных, не обладающих свойством избыточности (например, случайный сигнал или шум), невозможно. Также, обычно невозможно сжатие зашифрованной информации.