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

Как вы наверно заметили, мы уже говорили об этих двух программах когда рассматривали 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.



Наш баннер
Вы можете установить наш баннер на своем сайте или блоге, скопировав этот код:
RSS новости