## 4. Использование bzip2 с tar

Ниже перечислены три способа использовать bzip2 с tar, а именно

## 4.1. Самый простой в настройке

Этот метод не требует никакой установки вообще. Чтобы растарить в текущий каталог сжатый bzip2'ом архив tar foo.tar.bz2, введите

> `

>            /path/to/bzip2 -cd foo.tar.bz2 | tar xf -

> `

Этот способ нормально работает, но может надоесть при частой работе с архивами.

## 4.2. Простая установка, довольно легкая в использовании, не нужно иметь привилегии root

Благодарю Leonard Jean-marc за совет. Благодарю также Alessandro Rubini за различия bash от сsh. В вашем .bashrc, Вы можете поместить строку типа:

> `

>            alias btar='tar - use-compress-program usr/local/bin/bzip2'

> `

В вашем .tcshrc, или .cshrc, аналогичная строка:

> `

>            alias btar 'tar - use-compress-program /usr/local/bin/bzip2'

> `

## 4.3. Также легко в использовании, но требуется уровень доступа root.

Примените заплатку, приведенную ниже к gnu tar 1.12 следующим образом:

> `

>            cd tar-1.12/src; patch < /path/to/tar.diff

> `

Скомпилируйте его, установите, и вы готовы, чтобы следовать дальше. Удостоверьтесь что и tar, и bzip2 находится в вашем $PATH, выполнив "which tar" и "which bzip2". Для использования нового tar, выполните

> `

>             tar xyf foo.tar.bz2

> `

чтобы декомпрессировать файл. Чтобы сделать новый архив:

> `

>             tar cyf foo.tar.bz2 file1 file2 file3 ... directory1 directory2 ...

> `

Это заплатка:

> `

>       *** tar.c       Thu Jun 11 00:09:23 1998

>       --- tar.c.new   Thu Jun 11 00:14:24 1998

>       ***************

>       *** 196,201 ****

>       --- 196,203 ----

>           {"block-number", no_argument, NULL, 'R'},

>           {"block-size", required_argument, NULL, OBSOLETE_BLOCKING_FACTOR},

>           {"blocking-factor", required_argument, NULL, 'b'},

>       +   {"bzip2", required_argument, NULL, 'y'},

>       +   {"bunzip2", required_argument, NULL, 'y'},

>           {"catenate", no_argument, NULL, 'A'},

>           {"checkpoint", no_argument, _option, 1},

>           {"compare", no_argument, NULL, 'd'},

>       ***************

>       *** 372,377 ****

>       --- 374,380 ----

>                       PATTERN                at list/extract time, a globbing PATTERN\n\

>           -o, --old-archive, --portability   write a V7 format archive\n\

>               --posix                        write a POSIX conformant archive\n\

>       +   -y, --bzip2, --bunzip2             filter the archive through bzip2\n\

>           -z, --gzip, --ungzip               filter the archive through gzip\n\

>           -Z, --compress, --uncompress       filter the archive through compress\n\

>               --use-compress-program=PROG    filter through PROG (must accept -d)\n"),

>       ***************

>       *** 448,454 ****

>            Y  per-block gzip compression */

>         #define OPTION_STRING \

>       !   "-01234567ABC:F:GK:L:MN:OPRST:UV:WX:Zb:cdf:g:hiklmoprstuvwxz"

>         static void

>         set_subcommand_option (enum subcommand subcommand)

>       --- 451,457 ----

>            Y  per-block gzip compression */

>         #define OPTION_STRING \

>       !   "-01234567ABC:F:GK:L:MN:OPRST:UV:WX:Zb:cdf:g:hiklmoprstuvwxyz"

>         static void

>         set_subcommand_option (enum subcommand subcommand)

>       ***************

>       *** 805,810 ****

>       --- 808,817 ----

>               case 'X':

>               exclude_option = 1;

>               add_exclude_file (optarg);

>       +       break;

>       +

>       +       case 'y':

>       +       set_use_compress_program_option ("bzip2");

>               break;

>               case 'z':

> `