Библиотека сайта rus-linux.net
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':