Непрерывный архив

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

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

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

Недостатки непрерывного архива:

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

Многотомные и самораспаковывающиеся архивы также могут быть непрерывными.

Архиваторы, позволяющие создавать непрерывные архивы:

  • WinRAR/RAR
  • 7-Zip
  • FreeArc
  • Tar в комбинации с компрессорами gzip, bzip2, lzma (xz) и т. д.; для распаковки даже файлов из начала нужно распаковать весь архив.
  • WinAce

При использовании комбинаций Tar с компрессорами с малым размером словаря эффективность от использования непрерывных архивов снижается. В частности, очень малым словарем обладает gzip (32 КБ) и недостаточно большим — bzip2 (менее 1 МБ)[1].

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

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