Go to content Go to menu Go to search

Сжатие файлов архиватором под linux в много потоков

Преамбула

Далеко не все знают, что существуют аналоги gzip и gzip2 с поддержкой SMP, которые генерируют архивы, полностью совместимые со стандартными архиваторами. Зовутся эти чудо-архиваторы pigz, pbzip2 и lbzip2 (два последних имплементация bzip2, думаю лучше брать lbzip2, поскольку именно эта версия упоминается в доках на tar).

Инсталлируем:

yum install pigz pbzip2 lbzip2

Используем:

Паковать:

tar cf - <directory> | pigz - > <имя файла.tar.gz>

Распаковать

cat <имя файла.tar.gz> | unpigz - | tar xf -

Назначаем использование pigz в tar поумолчанию:

в файл /etc/bashrc добавить строку: alias tarz='tar --use-compress-program=pigz'

echo "alias tarz='tar --use-compress-program=pigz'" >> /etc/bashrc

или:

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

После чего для архивации использовать команду:

tarz -cf <output_file.tar.gz> <directory>

Тест:

Сервер Xeon, 16ядер
исходный файл: 10Гб

сжатие через обычный gzip 1поток:

real    9m16.961s  
user    9m6.995s  
sys     0m13.166s

сжатие через pigz 16 потоков:

real    1m10.759s  
user    14m28.143s  
sys     0m17.618s

Результат: ускорение в 10 раз!


при публикации материалов с данного сайта обратная ссылка на сайт обязательна.
valynkin.ru © no rights reserved