bzip2 и gzip: Программы для компрессирования (сжатия) данных

Как вы наверно заметили, мы уже говорили об этих двух программах когда рассматривали tar. В отличии от winzip для Windows, архивирование и компрессия осуществляется двумя различными утилитами –: tar для архивации, и двумя программами для сжатия bzip2 и gzip. Рассмотрением этих двух программ мы сейчас и займемся. Кстати, возможно использование и других утилит для сжатия данных, таких как zip, arj, rar и прочих. Они также существуют для GNU/Linux, но весьма редко используются.

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

Обе эти команды имеют подобный синтаксис:

gzip [options] [file(s)]

В случае, когда не указывается filename, обе программы gzip и bzip2 будут ожидать данных со стандартного потока ввода или посылать результаты в стандартный поток вывода. Поэтому вы можете использовать обе эти программы в каналах. Они также имеют общий набор опций:

Внимание

По умолчанию, обе программы gzip и bzip2 удаляют файлы, которые были компрессированы/декомпрессированы, если вы не используете опцию -c. В программе bzip2 вы можете избежать этого, используя опцию -k, но программа gzip не имеет подобной опции!

Теперь приведем несколько примеров. Допустим, мы желаем скомпрессировать все файлы в текущем каталоге, названия которых заканчиваются на .txt, используя программу bzip2. Вы можете сделать это так:

$ bzip2 -9 *.txt

Допустим, вы хотите дать попользоваться кому-то своими картинками, но у этого человека есть только gzip, а bzip2 напрочь отсутствует. Вам не прийдется декомпрессировать архив, а потом компрессировать его снова. Вы можете декомпрессировать его в стандартный вывод, использовать канал, скомпрессировать со стандартного ввода и перенаправить вывод в новый архив:

bzip2 -dc images.tar.bz2 | gzip -9 >images.tar.gz

Вот все и получилось. Кстати, вы можете вызвать bzcat вместо bzip2 -dc. Это работает и для программы gzip, но её имя zcat, но не gzcat. Также вы располагаете bzless (и по аналогии zless), которая предназначена для просмотра компрессированных файлов без предварительной декомпрессии. В качестве упражнения попробуйте найти команды, которые нужно ввести для просмотра сжатого файла без использования утилит bzless или zless.