Поиск по сайту:

Как сжимать и распаковывать файлы с помощью Pigz

Pigz, сокращение от pпараллельная iреализация gzip, представляет собой бесплатную многопоточную программу сжатия с открытым исходным кодом. утилита для сжатия и распаковки файлов в Linux. Pigz, произносится как pig-zee, использует библиотеки zlib и pthread и в полной мере использует преимущества нескольких процессоров и нескольких ядер при сжатии данных. Поскольку pigz сжимает файлы с использованием потоков, чтобы использовать несколько процессоров и ядер, он может архивировать большие файлы гораздо быстрее, чем с помощью gzip. Проще говоря, pigz делает то же, что и gzip, но распределяет работу между несколькими процессорами и ядрами при сжатии и значительно ускоряет процесс сжатия/распаковки. В этом руководстве мы научимся сжимать и распаковывать файлы параллельно с помощью Pigz в Linux.

Установите Pigz в Linux

Pigz доступен в официальных репозиториях популярных операционных систем Linux.

В Arch Linux и его вариантах, таких как Manjaro Linux, включите репозиторий [Community] и установите Pigz с помощью команды:

sudo pacman -S pigz

В CentOS 8/7/6:

sudo yum install pigz

В Debian:

sudo apt-get install pigz

В Fedora:

sudo dnf install pigz

В Ubuntu, Linux Mint:

sudo add-apt-repository universe
sudo apt install pigz

В openSUSE:

sudo zypper install pigz

В других дистрибутивах Linux скомпилируйте и установите из исходного кода, как показано ниже.

Сначала убедитесь, что у вас установлены следующие необходимые компоненты:

  • делать
  • GCC
  • zlib-развитие

Например, в системах на базе Debian вы можете установить вышеуказанные пакеты с помощью команды:

sudo apt install make gcc zlib-devel

В системах на базе RPM:

sudo yum install make gcc zlib-devel

Затем скачайте последнюю версию Pigz с официального сайта (ссылка приведена в конце):

wget https://zlib.net/pigz/pigz-2.4.tar.gz

Извлеките tar-файл pigz:

tar -xzvf pigz-2.4.tar.gz

Эта команда извлечет содержимое в папку с именем pigz-2.4 в текущем рабочем каталоге.

Компакт-диск в каталог «pigz-2.4»:

cd pigz-2.4

Скомпилируйте и установите его с помощью следующей команды:

make

Скопируйте двоичный файл pigz в свой путь `, например /usr/local/bin:

sudo cp pigz /usr/local/bin/

Выйдите из системы и войдите снова, чтобы начать использовать pigz.

Сжимайте и распаковывайте файлы с помощью Pigz

Pigz делит входные данные на фрагменты 128 КБ и сжимает каждый из них параллельно. Сгенерированный формат сжатых данных находится в формате gzip, zlib или zip с одной записью с использованием метода сжатия deflate. По умолчанию он сжимает файл в формате gzip (.gz).

Позвольте мне показать вам несколько практических примеров. В рамках данного руководства для тестирования я буду использовать файл archlinux.iso (размер 677,4 МБ).

Сжатие файлов

Чтобы сжать файл с параметрами по умолчанию, просто запустите:

pigz <path-to-file>

Пример:

pigz archlinux.iso

Приведенная выше команда сожмет указанный файл, то есть archlinux.iso, и сохранит его как archlinux.iso.gz в текущем рабочем каталоге.

Обратите внимание, что приведенная выше команда удалит исходный файл, то естьarchlinux.iso, после его сжатия. Если вы не хотите удалять исходный файл, используйте -k (держать), чтобы указать Pigz не удалять исходный файл после его обработки.

pigz -k archlinux.iso

Вывести содержимое архивного файла

Чтобы просмотреть содержимое вышеуказанного архивного файла, не распаковывая его, используйте флаг -l.

$ pigz -l archlinux.iso.gz 
compressed   original reduced  name
 654901763  677380096    3.3%  archlinux.iso

Как вы можете видеть в приведенном выше выводе, входной файл был уменьшен на 3,3% от исходного размера.

Укажите методы сжатия

Pigz поддерживает следующие методы сжатия:

  • Самое медленное и лучшее сжатие (-9)
  • Самое быстрое и меньшее сжатие (-1)
  • Без сжатия (-0)
  • Сжатие по умолчанию (-6)

Например, чтобы сжать файл, используя лучший метод сжатия (медленный), запустите:

pigz -9 archlinux.iso

Сжать файл с меньшим сжатием (быстро):

pigz -1 archlinux.iso

Без сжатия:

pigz -0 archlinux.iso

Изменить формат сжатия

По умолчанию выходной файл сохраняется в формате gzip. Однако вы можете изменить его на другой формат.

Следующая команда сжимает данный файл в zlib (.zz) вместо формата gzip:

pigz -k -z archlinux.iso

Здесь мы использовали -k (нижний регистр), чтобы сохранить исходный файл после его сжатия.

Аналогично, чтобы сжать файл в формате zip, используйте флаг -K (заглавные буквы):

pigz -k -K archlinux.iso

Сжатие каталогов

У Pigz нет возможности напрямую сжимать папки. Однако мы можем добиться этого, объединив команду tar с pigz, как показано ниже.

tar cf - Pictures/ | pigz > pictures.tar.gz

Приведенная выше команда сожмет папку «Изображения» и сохранит ее как файл images.tar.gz.

Как сказал один из наших читателей Wazz в разделе комментариев ниже, мы также можем использовать параметр «use-compress-program» в tar для запуска pigz вместо его передачи по конвейеру.

Пример :

tar --use-compress-program=pigz -cf yourfile.tar.gz folder1 folder2

Ограничить количество процессоров при сжатии

Как я уже сказал, Pigz максимально использует несколько процессоров и ядер при сжатии файлов. Вы можете изменить это поведение, используя флаг -p.

Например, следующая команда сожмет файл, используя лучший метод сжатия и 4 процессора, и сохранит исходный файл:

pigz -9 -k -p4 archlinux.iso

Чтобы узнать количество ядер процессора в Linux, обратитесь к следующему руководству:

  • Как узнать количество ядер процессора из командной строки в Linux

Распаковать файлы

Мы можем распаковать сжатые файлы в исходную форму с помощью команд pigz -d или unpigz.

pigz -d archlinux.iso.gz

Или,

unpigz archlinux.iso.gz

Более подробную информацию можно найти в разделе справки и на страницах руководства:

pigz --help
$  man pigz

Gzip против Pigz – сравнение производительности

Я протестировал файл archlinux.iso (размер 677,4 МБ) с помощью утилит Pigz и Gzip. Вот результаты:

Сжатие с помощью Gzip:

$ time gzip archlinux.iso

real    0m35.086s
user    0m32.719s
sys 0m1.333s

Сжатие с помощью Pigz:

$ time pigz archlinux.iso

real 0m12.545s
user 0m46.376s
sys 0m1.520s

Распаковка с помощью Gzip:

$ time gzip -d archlinux.iso.gz 

real    0m6.847s
user    0m5.621s
sys 0m0.783s

Декомпрессия с помощью Pigz:

$ time unpigz archlinux.iso.gz 

real    0m2.398s
user    0m2.370s
sys 0m1.931s

Как видно из приведенных выше результатов, Pigz может сжимать и распаковывать один файл размером 677,4 МБ в два раза быстрее, чем с помощью gzip.

Итак, если у вас современная многопроцессорная многоядерная система и вы хотите как можно быстрее сжимать файлы большего размера, используя все доступные ядра ЦП, pigz станет хорошим выбором! Попробуйте и сообщите нам свои мысли об утилите сжатия Pigz в разделе комментариев ниже.

Связанное чтение:

  • Как сжимать и распаковывать файлы в Linux
  • Как архивировать файлы и каталоги в Linux

Ресурсы:

  • Веб-сайт Pigz
  • Репозиторий Pigz на GitHub

Статьи по данной тематике