Как вы наверно заметили, мы уже говорили об этих двух программах когда рассматривали tar. В отличии от winzip для Windows, архивирование и компрессия осуществляется двумя различными утилитами –: tar для архивации, и двумя программами для сжатия bzip2 и gzip. Рассмотрением этих двух программ мы сейчас и займемся. Кстати, возможно использование и других утилит для сжатия данных, таких как zip, arj, rar и прочих. Они также существуют для GNU/Linux, но весьма редко используются.
Программа bzip2 была написана для замены программы gzip. Она действительно показывает лучшие характеристики по степени сжатия данных, но, с другой стороны она потребляет значительно больше памяти при работе. По этой причине программа gzip все еще более широко используется, чем bzip2.
Обе эти команды имеют подобный синтаксис:
gzip [options] [file(s)] |
В случае, когда не указывается filename, обе программы gzip и bzip2 будут ожидать данных со стандартного потока ввода или посылать результаты в стандартный поток вывода. Поэтому вы можете использовать обе эти программы в каналах. Они также имеют общий набор опций:
-1, ..., -9: устанавливает степень сжатия. Большее число - большая степень сжатия, но, соответственно и медленнее.
-d: разжать файл(ы). Это эквивалентно использованию программ gunzip или bunzip2;
-c: выбросить результаты компрессии/декомпрессии файлов, имена которых получены как параметры, в стандартный вывод.
По умолчанию, обе программы 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.