Материал из РУВИКИ — свободной энциклопедии

Архиватор

Архиватор — программа, предназначенная для упаковки без потерь одного и более файлов в единый файл-архив или в серию архивов для удобства переноса и/или хранения данных. Распаковка архивов выполняется с помощью того же архиватора либо посредством сторонних совместимых утилит. Большинство современных архиваторов также выполняет сжатие упаковываемых в архив данных.

Функции и характеристики[править | править код]

Простейшие архиваторы просто последовательно объединяют (упаковывают) содержимое файлов в архив, который, помимо файловых данных, содержит информацию об именах и размерах исходных файлов, чтобы можно было точно восстанавливать файлы в их первозданном виде. Поэтому большинство архиваторов также сохраняет метаданные файлов, предоставляемые операционной системой, такие как время создания и права доступа. Такую функциональность реализует tar — стандартный архиватор систем типа UNIX. Если необходимо уменьшить размер tar-архива, к нему применяют сжатие без потерь программами gzip, bzip2 и т. д. Большинство современных прикладных архиваторов использует сжатие при работе с настройками по умолчанию[1].

Многие архиваторы позволяют указывать дополнительные параметры, наиболее важные из которых влияют на степень и скорость сжатия. Эти характеристики — обратно зависимые величины. То есть, чем выше скорость упаковки, тем меньше степень сжатия, и наоборот. Что касается скорости распаковки, то в большинстве современных архиваторов применяются так называемые асимметричные алгоритмы сжатия, при которых скорость (и степень) упаковки практически не влияет на скорость распаковки, которая обычно гораздо выше.

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

Некоторые архиваторы позволяют создавать так называемые многотомные архивы, то есть архивы, состоящие из нескольких частей указанного или разного размера. Такие архивы удобно применять для переноса больших объёмов данных на носителях меньшего размера (например на флэшках или оптических дисках) и обмена данными через Интернет, когда вместо одного огромного архива практичнее передать несколько файлов меньшего размера. В разных архиваторах многотомность реализована по-разному. Например, в форматах ZIP и 7Z тома — это, по сути, просто разделённый на несколько частей исходный архив, что накладывает определённые ограничения на их использование, тогда как тома многотомных архивов RAR представляют собой практически полноценные архивы.

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

Степень сжатия данных[править | править код]

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

Нахождение для любого входного файла алгоритма с наименьшим возможным размером на выходе является алгоритмически неразрешимой задачей.

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

Примечания[править | править код]

Литература[править | править код]

  • Ватолин Д., Ратушняк А., Смирнов М., Юкин В. Методы сжатия данных. Устройство архиваторов, сжатие изображений и видео. — М.: ДИАЛОГ-МИФИ, 2002. — 384 с. — ISBN 5-86404-170-X.

Ссылки[править | править код]