Как лучше всего использовать параллельные bzip2 и gzip по умолчанию?

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

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

41
задан 23 September 2011 в 01:08

5 ответов

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

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

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

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

. Это создает другой тип дефолта.

0
ответ дан 23 September 2011 в 01:08

Вы можете использовать символические ссылки 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 .

Редактировать:

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

0
ответ дан 23 September 2011 в 01:08

Один из интересных вариантов - перекомпилировать 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
0
ответ дан 23 September 2011 в 01:08

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

alias gzip="pigz"
alias gunzip="unpigz"
0
ответ дан 23 September 2011 в 01:08

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

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

$ export TAR_OPTIONS="--use-compress-program=pbzip2"
$ tar czf myfile.tar.bz2 mysubdir/
0
ответ дан 23 September 2011 в 01:08

Другие вопросы по тегам:

Похожие вопросы: