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

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

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

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

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

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

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

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

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

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

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

Типы архивов[править | править код]

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

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

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

Самораспаковывающиеся архивы часто также называют 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.