Bzip2 и gzip используют только одно ядро, хотя многие компьютеры имеют более одного ядра. Но есть такие программы, как lbzip2, pbzip2 и pigz, которые используют все доступные ядра и обещают быть совместимыми с bzip2 и gzip.
Итак, как лучше всего использовать эти программы по умолчанию, чтобы tar cfa file.tar.bz2 directory
использовал lbzip2 / pbzip2 вместо bzip2? Конечно, я не хочу ничего ломать.
Идея символической ссылки действительно хороша.
Другое рабочее решение - использовать псевдоним tar
:
alias tar='tar --use-compress-program=pbzip2'
или, соответственно,
alias tar='tar --use-compress-program=pigz'
. Это создает другой тип дефолта.
Вы можете использовать символические ссылки 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.
Один из интересных вариантов - перекомпилировать 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
Используйте в своих ~ / .bash_aliases:
alias gzip="pigz"
alias gunzip="unpigz"
Ответ по символической ссылке действительно неверен. Он заменит gzip по умолчанию (или bzip2) на pigz (или pbzip2) для всей системы. Хотя параллельные реализации удивительно похожи на версии с одним процессом, тонкие различия в параметрах командной строки могут нарушить основные системные процессы, которые зависят от этих различий.
Опция «--use-compress-program» - гораздо лучший выбор. Второй вариант (очень похожий на псевдоним) - установить переменную окружения TAR_OPTIONS, поддерживаемую GNU tar:
$ export TAR_OPTIONS="--use-compress-program=pbzip2" $ tar czf myfile.tar.bz2 mysubdir/