
Введение
Gzip — надёжный формат сжатия, но стандартная утилита gzip использует только одно ядро CPU. Pigz (parallel implementation of gzip) — многопоточная замена, которая выполняет сжатие в формате GNU Zip с использованием нескольких процессорных ядер и часто делает это гораздо быстрее.
Кратко: pigz совместим с форматом .gz, поддерживает большинство привычных опций gzip (например, уровни от 1 до 9), имеет собственные ключи для многопоточности и может работать как внешний компрессор для tar.
Что нужно знать прежде, чем начать
- Термины: “сжатие” — уменьшение размера файла; “архив” — объединение нескольких файлов в один контейнер (tar).
- Pigz не является архиватором: он сжимает отдельные файлы (.gz). Для каталогов используйте tar вместе с pigz.
- Опции, которые часто используются: -k (сохранить исходный файл), -d (разархивация), -p N (использовать N потоков), числа 1–9 — уровень компрессии.
Важно: в командах ниже пробелы между именем команды и параметрами обязателны: pigz -k file, а не pigz-k file.
Установка
На Debian/Ubuntu/Mint и совместимых дистрибутивах:
sudo apt install pigz
На Arch Linux и Manjaro:
sudo pacman -S pigzНа openSUSE:
sudo zypper install pigzЕсли пакет недоступен в репозитории, можно собрать из исходников с официального репозитория проекта.
Сжатие одного файла
Чтобы сжать файл в формат .gz с помощью pigz:
pigz имя_файлаПо умолчанию pigz заменяет исходный файл сжатым (удаляет оригинал). Чтобы сохранить исходный файл, используйте -k:
pigz -k имя_файлаВыбор уровня сжатия (1—9):
pigz -5 файл- 1 — максимально быстро, но менее эффективно по размеру;
- 9 — максимально эффективно по размеру, но медленнее.

Сжатие каталогов (tar + pigz)
Pigz не умеет архивацию каталога сам по себе. Для папок используйте tar и укажите pigz как внешний компрессор. Примеры:
tar --use-compress-program="pigz -k -9" -cf pictures.tar.gz PicturesПояснение:
--use-compress-program="pigz -k -9"— tar будет использовать внешний процессор pigz с ключами-k(сохранить файлы) и-9(максимальный уровень сжатия);-c— создать архив;-f pictures.tar.gz— имя создаваемого файла архива;Pictures— папка, которую архивируем.
Альтернативный синтаксис (короткий) в современных версиях tar:
tar -I pigz -cf pictures.tar.gz Pictures
Распаковка файлов и архивов
Разжатие отдельного .gz файла:
pigz -d имя_файла.gz
# или эквивалентно
unpigz имя_файла.gzДля распаковки tar.gz, где для сжатия использовался pigz, применяйте tar с тем же внешним процессором:
tar --use-compress-program="pigz -d" -xvf pictures.tar.gzИли коротко, если tar поддерживает -I:
tar -I pigz -xvf pictures.tar.gz
Управление параллелизмом и влияние на систему
По умолчанию pigz пытается использовать все доступные ядра процессора. При сжатии больших наборов данных это может снизить отзывчивость системы. Ограничьте число потоков через -p:
pigz -k -p 2 файлПример: -p 2 заставит pigz работать только на двух ядрах. Подберите число, учитывая нагрузку и количество ядер в системе.
Совет: для фоновых бэкапов запускайте pigz с меньшим числом потоков; для однократной пакетной операции — используйте больше потоков.
Практические рекомендации и методика выбора опций
Мини‑метод: как выбрать параметры для задачи
- Определите приоритет: скорость или размер? Если скорость — используйте
-1и больше потоков. Если размер —-9. - Учитывайте влияние на систему: ограничьте
-pпри интерактивной работе. - Для каталогов всегда используйте tar с
--use-compress-program="pigz ...". - Для резервного копирования, где требуется хранить исходники, добавляйте
-k.
Ментальные модели:
- “CPU vs IO”: при слабом диске увеличение потоков может не дать прироста — узким местом становится I/O.
- “Быстрое бэкапирование”: берегите интерактивность, ограничив потоки и снижая уровень компрессии.
Когда pigz не подходит (противопоказания)
- Нужен контейнерный архив с сохранением метаданных и атрибутов — используйте tar с подходящими ключами; pigz сам по себе не архивирует каталоги.
- Сжатие коротких, уже сжатых файлов (изображения, видео) часто даёт небольшой выигрыш и тратит CPU.
- На машинах с очень высоким I/O-ограничением параллелизм может ухудшить скорость.
Альтернативы и сравнение (кратко)
- gzip: однопоточный, стандартный; совместим по формату.
- pigz: многопоточный gzip-совместимый.
- pbzip2/bzip2: многопоточный bzip2-совместимый (лучше по сжатию в некоторых случаях, но медленнее).
- zstd: современный алгоритм, быстрое сжатие и отличная степень компрессии; имеет собственный формат, не совместим с .gz.
Выбор зависит от совместимости форматов, требований к скорости и степени сжатия.
Контроль качества: тесты и приёмка
Критерии приёмки
- Файл .gz корректно создаётся и распаковывается стандартной утилитой gzip/gunzip или pigz.
- При использовании
-kисходный файл остаётся. - При указании
-p Nутилита использует не более N потоков (проверяется инструментами мониторинга CPU).
Минимальные тесты
- Сжатие и распаковка текстового файла:
pigz -k test.txt→pigz -d test.txt.gz. - Архивация каталога:
tar --use-compress-program="pigz -9" -cf a.tar.gz dir→tar --use-compress-program="pigz -d" -xvf a.tar.gz. - Проверка ограничения потоков: запустить
pigz -p 1на большом файле и наблюдать нагрузку.
Роли и чеклисты
Администратор
- Установить pigz из репозитория.
- Настроить cron/скрипты бэкапа с разумными параметрами
-pи-k. - Тестировать восстановление из архива.
Разработчик/DevOps
- Выбрать компрессор, учитывая совместимость CI/CD и артефактов.
- Обновить скрипты сборки: заменить gzip на pigz там, где важна скорость.
Пользователь рабочего стола
- Использовать pigz для локального сжатия больших каталогов, но ограничивать потоки для сохранения отзывчивости.
Пример рабочего процесса (SOP)
- Проверить наличие pigz:
which pigz. - Для архивирования каталога выполнить:
tar --use-compress-program="pigz -k -6 -p 4" -cf backup.tar.gz /path/to/data. - Перенести backup.tar.gz на хранение.
- Для восстановления:
tar --use-compress-program="pigz -d" -xvf backup.tar.gz.
Диаграмма принятия решения
flowchart TD
A[Нужно сжать файл или каталог?] -->|Файл| B[Использовать pigz]
A -->|Каталог| C[Использовать tar + pigz]
B --> D[Определить приоритеты]
D -->|Скорость| E[pigz -1 -p <число>]
D -->|Максимальный коэффициент| F[pigz -9 -p <число>]
C --> G[tar --use-compress-program='pigz ...']Совместимость и рекомендации по миграции
- Формат .gz, созданный pigz, полностью совместим с gzip/gunzip.
- Для перехода со скриптов, использующих gzip, обычно достаточно заменить вызовы
gzipнаpigzи проверить опции-k/-p. - Для интеграции с системами архивации/бэкапа убедитесь, что на всех узлах доступен pigz или используйте совместимый gzip для распаковки.
Заключение
Pigz — простой и эффективный способ ускорить сжатие в формате .gz на многопроцессорных системах. Он совместим с gzip по формату, легко интегрируется с tar и имеет полезные опции для контроля параллелизма и сохранения исходников. При выборе параметров ориентируйтесь на баланс между скоростью, нагрузкой на систему и степенью сжатия.
Примечание об изображении: изображение предоставлено Miguel Á. Padriñán @Pexels.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента