Как сжимать и распаковывать файлы с помощью 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