Команда bunzip2

Команда bunzip2 предназначена для восстановления оригинальных версий файлов, которые были сжаты с помощью утилиты bzip2, использующей алгоритм Барроуза-Уилера. Упомянутый алгоритм позволяет достичь лучшей степени сжатия данных, чем тот, который реализован в рамках утилит gzip и zip, но зачастую худшей степени сжатия данных, чем тот, который реализован в рамках утилиты xz. При этом операция декомпрессии является практически такой же ресурсоемкой, как и операция компрессии.

Базовый синтаксис команды выглядит следующим образом:

$ bunzip2 [параметры] <имена файлов>

Команда bunzip2 является ничем иным, как символьной ссылкой на утилиту bzip2 с параметром -d. Чаще всего она используется вообще без каких-либо параметров, причем в качестве аргументов может передаваться неограниченное количество имен сжатых файлов, оригинальные версии которых следует восстановить. По умолчанию сжатые версии файлов заменяются на их оригинальные версии с соответствующими метаданными (то есть, меткой времени модификации, правами доступа, именами владельца и группы владельцев и так далее). Если вас не устраивает такое положение дел, вы можете воспользоваться параметром -k для сохранения сжатых версий файлов. Кроме того, вы можете использовать параметр -s для того, чтобы сэкономить оперативную память, но приготовьтесь к длительному ожиданию, ведь в этом случае скорость обработки данных снизится практически вдвое. Параметр -t предназначен для тестирования целостности сжатого файла и не оказывает какого-либо влияния на него (следует комбинировать его с параметром -v для подробного вывода).

Если же вам нужно восстановить оригинальные версии файлов из архива с несколькими файлами внутри, вы не сможете обойтись одной командой bunzip2. Для этой цели также понадобится утилита tar, с помощью которой можно извлечь файлы из архива, сжатого с помощью утилиты bzip2. Например, вы можете использовать следующую последовательность команд для распаковки архива с именем archive.tar.bz2:

$ bunzip2 archive.tar.bz2
$ tar -xf archive.tar

Параметры -x и -f утилиты tar предназначены для указания на необходимость извлечения всех файлов из архива (-c) и чтения имени файла архива из следующего аргумента (-f). Альтернативным вариантом является замена первой команды на параметр -j утилиты tar, позволяющий автоматически восстановить оригинальную версию файла архива с помощью bunzip2:

$ tar -xfj archive.tar.bz2

Примеры использования

Восстановление оригинальной версии одного файла

$ bunzip2 text.txt.bz2

В результате сжатая версия файла text.txt.bz2 будет заменена на его оригинальную версию text.txt.

Одновременное восстановление оригинальных версий нескольких файлов

$ bunzip2 text1.txt.bz2 text2.txt.bz2 text3.txt.bz2

В этом случае также все сжатые версии файлов (text1.txt.bz2, text2.txt.bz2, text3.txt.bz2) будут заменены на оригинальные версии (text1.txt, text2.txt, text3.txt). Распаковка сжатого файла архива будет рассмотрена ниже.

Восстановление оригинальной версии файла с сохранением сжатой версии

$ bunzip2 -k text.txt

Теперь сжатая версия файла text.txt.bz2 будет оставлена в директории вместе с оригинальной версией text.txt.

Распаковка сжатого архива

$ tar -xfj etc.tar.bz2

В результате в текущей директории будут сохранены все файлы из архива etc.tar.bz2.

Проверка целостности сжатой версии файла

$ bunzip2 -vt text.txt.bz2
  text.txt.bz2: ok

Для проверки целостности сжатых версий файлов используются контрольные суммы (CRC). В случае повреждения сжатой версии файла выводится сообщение об ошибке, в противном случае — лишь слово «ok».