Архив (информатика)

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

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

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

Применение[править | править вики-текст]

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

Помимо целей архивирования, архивы часто используются для распространения пакетов программного обеспечения; в этом случае архив нередко называют дистрибутивным пакетом и к нему могут применяться дополнительные условия касательно содержимого (скажем, должен присутствовать файл манифеста). Примеры архивов-дистрибутивов: deb для Debian, JAR для Java, APK для Android.

Функциональные особенности[править | править вики-текст]

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

Форматы архивов[править | править вики-текст]

Формат архива — это файловый формат архивного файла. Существует множество форматов архивов, но лишь некоторые из них получили широкое признание и поддержку со стороны поставщиков ПО и пользовательских сообществ. Так, к числу наиболее популярных в среде Windows относятся ZIP, RAR, 7z, а в Mac OS – формат SIT.

Типы архивов[править | править вики-текст]

  • Только архивирующие форматы выполняют лишь слияние файлов в один (пример: tar).
  • Только сжимающие форматы выполняют лишь сжатие файлов (примеры: gzip, bzip2).
  • Многофункциональные форматы позволяют сливать файлы в один, сжимать их, зашифровывать, создавать информацию для обнаружения и исправления ошибок, оформлять архивы как самораспаковывающиеся для извлечения содержимого без участия дополнительного ПО (примеры: RAR, ZIP, 7z).
  • Дистрибутивные форматы используются для создания пакетов установки ПО, которые также могут быть самоинсталлируемыми файлами (примеры: JAR, APK, IPA).
  • Форматы дисковых образов используются для создания образов дисков, применяемых как тома хранения информации (примеры: ISO, NRG).
Схема совместного использования архивирования и сжатия

Подвиды архивов[править | править вики-текст]

Самораспаковывающиеся архивы[править | править вики-текст]

Самораспаковывающиеся архивы часто также называют SFX-архивами (от англ. SelF-eXtracting — самоизвлечение). В отличие от обычного архива, самораспаковывающийся архив имеет формат исполняемого файла (в Windows это файл с расширением .EXE), для извлечения данных из которого (а также нередко для тестирования и показа списка содержимого) не требуется отдельная программа — всё выполняется средствами самого SFX-архива. Иными словами, вы просто запаковываете информацию в SFX-архив, а получателю, которому она предназначена, нужно лишь запустить этот SFX-архив (в аналогичной ОС), чтобы получить разархивированную информацию. Примечание. В действительности SFX-архивы — это обычные архивы, к которым прикреплён небольшой исполняемый модуль-разархиватор, поэтому при необходимости (например, из-за опасения, что этот исполняемый модуль может быть заражен вирусом) для работы с SFX-архивом можно использовать соответствующий внешний архиватор, не запуская сам SFX-файл.

Многотомные архивы[править | править вики-текст]

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

Непрерывные архивы[править | править вики-текст]

Непрерывное (англ. – solid) архивирование — это разновидность архивирования, при котором все добавляемые в архив файлы рассматриваются архиватором как один непрерывный поток данных. Благодаря такому подходу удаётся добиться существенного увеличения степени сжатия, особенно при упаковке множества однотипных файлов сравнительно (с величиной «скользящего словаря» архиватора) небольшого размера. Помимо очевидного преимущества (более сильное сжатие) непрерывные архивы имеют и свои недостатки. Так как данные в непрерывном архиве — это один сплошной поток, то чтобы извлечь какой-либо файл, сначала нужно распаковать все файлы, которые находятся в архиве перед этим файлом, поэтому извлечение файлов, расположенных в конце архива, происходит медленнее. Также медленнее, чем в обычном (не solid) архиве, выполняются операции по изменению содержимого архива (добавление и удаление файлов). Кроме того, если архив по какой-то причине окажется повреждённым, то из него удастся извлечь только файлы, идущие до места повреждения, а вся информация после этого места окажется утерянной. Иными словами, непрерывные архивы хороши для упаковки и хранения данных, изменять которые требуется редко.

Метаданные[править | править вики-текст]

Архив почти всегда содержит метаданные. К ним относятся:

  • Имена файлов (кроме некоторых программ сжатия одиночных файлов — например, gzip, где имя файла — это имя архива без расширения)
  • Идентификаторы владельцев, групп, и т. п. файлов и их прав
  • Размеры файлов
  • Даты изменения, создания и последнего обращения к файлам
  • Контрольные суммы файлов для проверки правильности распаковки
  • Размер и контрольные суммы архива
  • Избыточные данные для восстановления данных при повреждении
  • Цифровая подпись создателя архива

Обнаружение и коррекция ошибок[править | править вики-текст]

Архивы обычно содержат проверку чётности и другие контрольные суммы для обнаружения ошибок, например в архивах ZIP используется циклический избыточный код (CRC), а в архивах RAR (версии 5 и новее) также могут применяться более надёжные суммы BLAKE2. В архивах RAR можно добавлять избыточную информацию для коррекции ошибок («данные для восстановления»). Кроме того, в формате RAR поддерживаются особые «тома для восстановления», позволяющие восстанавливать не только повреждённые, но даже отсутствующие тома многотомного архива. Для той же цели с другими архивными форматами иногда применяются файлы PAR, создаваемые сторонними утилитами.


См. также[править | править вики-текст]

Литература[править | править вики-текст]

  • Степанов А. Н. 6.3. Архивация файловых объектов // Информатика: базовый курс: для студентов гуманитарных специальностей вузов. — Питер, 2010. — 719 p. — ISBN 9785388005250.
  • Пасько В.П. Глава 34. Программы архивирования // Энциклопедия ПК. Аппаратура. Программы. Интернет. — БХВ-Петербург, 2004. — 800 p. — ISBN 9789665521327.