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

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

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

39 голосов | спросил elmicha 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 23 Sep 2011 01:08:04 +0400 2011, 01:08:04

5 ответов


30

Вы можете символически привязать 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 или не link gunzip /gzcat /zcat еще.

ответил elmicha 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 23 Sep 2011 01:08:58 +0400 2011, 01:08:58
31

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

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

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

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

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

ответил Bastian Ebeling 27 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 27 Sep 2011 11:45:45 +0400 2011, 11:45: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 PMpTue, 30 Apr 2013 17:06:34 +040006Tuesday 2013, 17:06:34
3

Один увлекательный вариант - перекомпилировать 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 5 Maypm16 2016, 16:36:22
-2

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

alias gzip="pigz"
alias gunzip="unpigz"
ответил foo bar 11 ThuEurope/Moscow2014-12-11T11:21:44+03:00Europe/Moscow12bEurope/MoscowThu, 11 Dec 2014 11:21:44 +0300 2014, 11:21:44

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132