Каков наилучший способ использования параллельных bzip2 и gzip по умолчанию?

35

Bzip2 и gzip используют только одно ядро, хотя многие компьютеры имеют более одного ядра. Но есть программы вроде lbzip2, pbzip2 и pigz, которые используют все доступные ядра и обещают быть совместимыми с bzip2 и gzip.

Итак, каков наилучший способ использования этих программ по умолчанию, так что tar cfa file.tar.bz2 directory использует lbzip2 / pbzip2 вместо bzip2? Конечно, я не хочу ничего сломать.

    
задан elmicha 22.09.2011 в 23:08
источник

5 ответов

28

Вы можете символически привязать bzip2, bunzip2 и bzcat к lbzip2, а gzip, gunzip, gzcat и zcat к pigz:

sudo apt-get install lbzip2 pigz
cd /usr/local/bin
ln -s /usr/bin/lbzip2 bzip2
ln -s /usr/bin/lbzip2 bunzip2
ln -s /usr/bin/lbzip2 bzcat
ln -s /usr/bin/pigz gzip
ln -s /usr/bin/pigz gunzip
ln -s /usr/bin/pigz gzcat
ln -s /usr/bin/pigz zcat

Я выбрал lbzip2 вместо pbzip2, потому что /usr/share/doc/lbzip2/README.gz выглядит «лучше», чем /usr/share/doc/pbzip2/README.gz. Кроме того, руководство tar говорит о lbzip2 .

Edit:

pigz-2.1.6, который включен в Precise Pangolin, отказывается распаковывать файлы с неизвестными суффиксами (например, initramfs - *. img). Это зафиксировано в pigz-2.2.4, который поставляется с Quantal. Поэтому вы можете подождать до Quantal, установить Quantal package вручную или не связывать gunzip / gzcat / zcat пока.

    
ответ дан elmicha 22.09.2011 в 23:08
источник
30

Идея символической ссылки действительно прекрасна.
Другим рабочим решением является псевдоним tar :

alias tar='tar --use-compress-program=pbzip2'

или соответственно

alias tar='tar --use-compress-program=pigz'

Он создает другой тип по умолчанию.

    
ответ дан Bastian Ebeling 27.09.2011 в 09:45
13

Ответ на символическую ссылку действительно неверен. Он заменит gzip (или bzip2) по умолчанию на pigz (или pbzip2) для всей системы. Хотя параллельные реализации очень похожи на отдельные версии процессов, тонкие различия в параметрах командной строки могут привести к повреждению основных системных процессов, которые зависят от этих различий.

Опция «use-compress-program »- намного лучший выбор. Второй вариант (похожий на псевдоним) заключается в установке переменной среды TAR_OPTIONS, поддерживаемой GNU tar:

$ export TAR_OPTIONS="--use-compress-program=pbzip2"
$ tar czf myfile.tar.bz2 mysubdir/
    
ответ дан user154053 30.04.2013 в 15:06
2

Один увлекательный вариант - перекомпилировать tar для использования многопоточности по умолчанию. Скопировано из этот ответ stackoverflow

Перекомпиляция с заменой

Если вы создаете tar из источников, вы можете перекомпилировать с параметрами

--with-gzip=pigz
--with-bzip2=lbzip2
--with-lzip=plzip

После повторной компиляции tar с этими параметрами вы можете проверить вывод справки tar:

$ tar --help | grep "lbzip2\|plzip\|pigz"
  -j, --bzip2                filter the archive through lbzip2
      --lzip                 filter the archive through plzip
  -z, --gzip, --gunzip, --ungzip   filter the archive through pigz
    
ответ дан Tom Koch 05.05.2016 в 15:36
-2

Используйте в своих ~ / .bash_aliases:

alias gzip="pigz"
alias gunzip="unpigz"
    
ответ дан foo bar 11.12.2014 в 09:21