gzip — это стандартная утилита в Linux для сжатия и распаковки файлов. Она уменьшает размер файлов, экономит место и ускоряет передачу данных по сети. Поддерживает разные уровни сжатия (от -1 — быстро до -9 — максимально).gzip применяется для уменьшения размеров логов и бэкапов, упаковки результатов сборки, сжатия данных перед передачей по сети, автоматических задач (cron, CI/CD).В этом посте мы рассмотрим несколько сценариев использования
gzip.🐧 Сжатие с оптимизацией. Чтобы сжать файл с максимальной степенью сжатия, выполните:
gzip -9 имя_файла
Это удобно для критических случаев, где важнее уменьшить размер файла, чем скорость обработки.
🐧 Сжатие через стандартный ввод. Команда
gzip может сжимать данные не только из файлов, но и через стандартный ввод. Например, можно сжать вывод другой команды:mysqldump имя_базы_данных | gzip > backup.sql.gz
Эта команда создаст резервную копию базы данных, одновременно сжимая её, что особенно полезно для экономии места при больших базах.
🐧 Использование нескольких процессоров: pigz. Классический вариант gzip использует только одно ядро процессора для сжатия. Но можно воспользоваться параллельной версией утилиты — pigz. Эта версия распределяет задачу сжатия на несколько ядер, что значительно ускоряет процесс:
pigz имя_файла
pigz поддерживает все те же параметры, что и gzip, но работает быстрее на многоядерных системах.🐧 Просмотр содержимого сжатого файла. Чтобы просмотреть статистику сжатого файла без его распаковки, используйте команду:
gzip -l имя_файла.gz
Вывод покажет размер до и после сжатия, степень сжатия и имя исходного файла. Для более детализированного отчета добавьте параметр
-v:gzip -lv имя_файла.gz
Это полезно для оценки эффективности сжатия файлов перед их распаковкой.
🐧 Рекурсивное сжатие/распаковка файлов. Для сжатия всех файлов в каталоге и его подкаталогах используйте рекурсивную опцию
-r:gzip -r имя_каталога
Эта команда пройдется по всей структуре каталога и сожмет каждый файл.
Чтобы распаковать все файлы в каталоге рекурсивно, используйте:
gzip -dr имя_каталога
🐧 Работа с архивами tar.gz. Часто
gzip используется вместе с командой tar. Например:tar -czf архив.tar.gz имя_каталога
Здесь
-c создает архив, -z указывает на использование сжатия через gzip, а -f определяет имя файла архива. Для распаковки архива:
tar -xzf архив.tar.gz
🐧 Пример эффективного сжатия данных
Сжать лог-файлы перед отправкой по сети:
cat /var/log/syslog | gzip -9 | nc -w 3 192.168.1.10 8888
Эта команда сжимает лог и отправляет его по сети с помощью netcat.