bzip2

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

Bzip2-logo.png

Расширение

.bz2

MIME-тип

application/x-bzip

Сигнатура

BZh

Разработчик

Джулиан Сюард

Тип формата

Сжатие данных

Открытый формат?

Да: Лицензия BSD

Сайт

bzip.org

bzip2
Bzip2-logo.png
Тип

Сжатие данных

Разработчик

Джулиан Сюард

Операционная система

Кроссплатформенное ПО

Последняя версия

1.0.6 (20 сентября 2010 года)

Лицензия

Лицензия BSD[1]

Сайт

bzip.org

bzip2 — бесплатная свободная утилита командной строки с открытым исходным кодом для сжатия данных, реализация алгоритма Барроуза — Уилера.

Разработана и впервые опубликована Джулианом Сюардом (англ. Julian Seward) в июле 1996 года (версия 0.15). Стабильность и популярность компрессора росли в течение нескольких лет, и версия 1.0 была опубликована в конце 2000 года.

Эффективность[править | править вики-текст]

В соответствии с традициями UNIX‐программирования, bzip2 единовременно выполняет только одну функцию: сжатие или распаковку одного файла. При этом к названию файла по умолчанию добавляется .bz2. Для упаковки нескольких файлов их обычно сперва архивируют в один файл утилитой tar и затем уже сжимают при помощи bzip2. Такие архивы обычно имеют расширение .tar.bz2.

bzip2 сжимает большинство файлов эффективнее, но медленнее, чем более традиционные gzip или ZIP. В этом отношении он похож на другие современные алгоритмы сжатия.

bzip2 плохо подходит для ежедневной работы в качестве штатного архиватора резервного копирования серверной системы с круглосуточной востребованностью. Рекомендуется в основном для разовых процедур эффективной упаковки большого объёма данных, когда не критично время исполнения и нагрузка на CPU. Операции упаковки bzip2 выполняет с существенной нагрузкой на CPU (что обусловлено его математическим аппаратом), поэтому достаточно продолжительное время (10Gb упаковываются 3-4 часа) центральный процессор будет занят в основном процессом bzip2 (архивацией данных) и не сможет оперативно обслуживать другие процессы системы, что может являться причиной отказа в обслуживании, например веб-сервера, в период выполнения на нём операции резервного копирования.

В некоторых случаях bzip2 проигрывает архиваторам 7-Zip (LZMA) и RAR по абсолютной эффективности сжатия. Согласно автору, bzip2 проигрывает от 10 до 15 процентов наилучшему классу алгоритмов сжатия данных, известных на данный момент (PPM)[2], но при этом в два раза быстрее при сжатии и в 6 раз быстрее при распаковке.

bzip2 использует Преобразование Барроуза — Уилера для превращения последовательностей многократно чередующихся символов в строки одинаковых символов, затем применяет преобразование MTF, и в конце кодирование Хаффмана. Блоки в bzip2 имеют одинаковый размер в несжатом потоке. Размер блока можно выбрать при помощи аргумента командной строки, и он помечается в сжатом тексте произвольно выбранной последовательностью битов представления числа π.

Предшественник bzip2, программа bzip, использовала арифметическое кодирование после сортировки блока. От него отказались из‑за патентных ограничений.

Использование[править | править вики-текст]

bzip2 можно использовать как в комбинации с tar, так и отдельно: bzip2 file для сжатия и bzip2 -d file.bz2 для распаковки (вместо bzip2 -d можно использовать альтернативное название bunzip2).

Аргументы командной строки bzip2 в основном такие же, как и у gzip. Так, для распаковки архива tar, сжатого bzip2:

bzip2 -cd имяархива.tar.bz2 | tar -xvf -

Для создания сжатого bzip2 архива tar:

tar -cvf - файлы | bzip2 -9 > имяархива.tar.bz2

Версия GNU tar поддерживает флаг -j, который позволяет создавать и распаковывать tar.bz2 файлы без использования перенаправлений ввода-вывода (англ. pipeline):

tar -cvjf имя архива.tar.bz2 списокфайлов

Распаковка tar-архива, сжатого bzip2 при помощи GNU tar:

tar -xvjf имяархива.tar.bz2

Современные версии GNU tar имеют функцию автоматического распознавания типа архива, и поэтому можно написать:

tar -xvf имяархива.tar.bz2

Кроме того существует набор утилит для выполнения поиска, вывода, восстановления и сравнения данных в формате bzip2: bzcat, bzdiff, bzfgrep, bzless, bzcmp, bzegrep, bzgrep, bzip2recover, bzmore.

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

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

  1. bzip2 : Home. Julian Seward. — «Why would I want to use it? [..] Because it's open-source (BSD-style license), and, as far as I know, patent-free.»  Проверено 27 сентября 2008. Архивировано из первоисточника 15 февраля 2012.
  2. На данный момент наиболее эффективными компрессорами являются различные варианты PAQ, однако использование данного алгоритма крайне затруднено по причине очень низкой производительности, сжатие требует больших временных затрат.

Ссылки[править | править вики-текст]