gzip

Сжатие или распаковка файлов (UNIX)

Синтаксис:

gzip [-cdfhLlNnqrtVv19] [-S суффикс] [имя...] 
gunzip [-cfhLlNnqrtvV] [имя...]
zcat [-hLV] [имя...]

Опции:

-c
Запись вывода в стандартный поток вывода без изменения исходных файлов. При наличии нескольких входных файлов вывод состоит из последовательности независимо сжатых элементов. Для оптимизации сжатия перед началом операции следует выполнить конкатенацию всех входных файлов.
-d
Распаковать.
-f
Принудительно сжать или распаковать файл, даже если он содержит несколько ссылок или соответствующий файл уже существует. Если опция -f не указана, то в случае выполнения утилиты не в фоновом режиме gzip запрашивает подтверждение перезаписи существующего файла.

Note: Для сжатия или распаковки файлов в файловой системе RAM (/dev/shmem) используется опция -f.

-h
Вывести справку.
-L
Отобразить лицензию gzip.
-l
Вывести содержимое сжатого файла в виде списка.
-N
Сохранить или восстановить исходное имя и метку времени.
-n
Не сохранять и не восстанавливать исходное имя и метку времени.
-q
Скрыть все предупреждения.
-r
Выполнить рекурсивный переход по структуре каталогов. Если какое-либо из указанных в командной строке имен файлов является именем каталога, утилита gzip переходит в каталог и выполняет сжатие найденных там файлов (или их распаковку в случае использования утилиты gunzip).
-S суффикс
Использовать указанный суффикс в сжатых файлах.
-t
Выполнить тестирование. Проверить целостность сжатого файла.
-V
Версия. Отобразить номер версии и опции компиляции.
-v
Вывести расширенную информацию. Отобразить имя и сокращение размера в процентах для каждого сжатого файла.
-1
-9
Регулировать скорость сжатия, где -1 (один) – метод сжатия с наивысшей скоростью (наименьшее сжатие), а -9 – метод сжатия с наименьшей скоростью (оптимальное сжатие).

Платформы:

ЗОСРВ «Нейтрино»

Целевые архитектуры:

aarch64, arm, armv7, e2k, mips, ppc, x86

Описание:

Утилита gzip сокращает размер указанных файлов с помощью алгоритма кодировки Lempel-Ziv (LZ77). Если возможно, каждый файл заменяется файлом с расширением .gz при сохранении данных о режиме, принадлежности, времени доступа и изменения. (Расширение -z используется для VMS, z – для MSDOS, OS/2 и Atari.) Если файлы не указаны, выполняется сжатие стандартного потока ввода в стандартный поток вывода. Если новое имя файла является слишком длинным, утилита gzip усекает его с сохранением исходного имени файла в сжатом файле. Утилита gzip выполняет попытку сжатия только стандартных файлов. В частности, она игнорирует символьные ссылки.

Для восстановления сжатых файлов до исходного вида используются утилиты gzip -d, gunzip или zcat.

Утилита gunzip заменяет каждый файл из списка в командной строке, имя которого оканчивается на .gz, .GZ или -z, а начинается с корректного "магического" числа, несжатым файлом без исходного расширения. Эта утилита также распознает специальные выражения .tgz и .taz в качестве условных обозначений для .tar.gz или .tar.GZ.

Утилита gunzip в настоящее время может распаковать файлы, созданные посредством утилит gzip, zip, compress или pack. Формата ввода определяется автоматически. При использовании первых двух форматов утилита gunzip проверяет 32-разрядный CRC. Для формата pack gunzip проверяет длину в несжатом виде. Формат сжатия не предусматривает проверок целостности. Однако в некоторых случаях утилита gunzip может обнаружить поврежденный файл .GZ. При ошибке распаковки файла .GZ не следует полагать, что файл .GZ является корректным только по причине отсутствия предупреждений со стороны стандартной утилиты uncompress. Как правило, это означает, что стандартная утилита uncompress не проверяет входные данные и генерирует некорректный вывод.

Утилита gzip используется для распаковки файлов, созданных посредством zip, только в том случае, если эти файлы включают один компонент, сжатый методом "deflation". Эта функция предназначена только для преобразования файлов tar.zip в формат tar.gz. Для извлечения файлов zip с несколькими компонентами следует использовать вместо gunzip утилиту unzip.

Утилита zcat идентична gunzip -c. (В некоторых системах утилиту zcat можно установить в качестве gzcat с сохранением исходной ссылки на утилиту compress.) Утилита zcat выполняет распаковку файлов из списка в командной строке или из стандартного ввода и записывает извлеченные данные в стандартный поток вывода. Она распаковывает файлы с корректным "магическим" числом независимо от наличия суффикса .gz.

Утилита gzip использует алгоритм Lempel-Ziv, применяемый в zip и PKZIP. Общее сжатие зависит от размера входного файла и распределения общих подстрок. Как правило, текст (исходный текст или текст на английском языке) сокращается на 60–70%. Качество сжатия, как правило, выше, чем при использовании алгоритма кодировки LZW (compress), метода Хаффмана (pack) или адаптивного метода Хаффмана (compact).

Сжатие выполняется даже в том случае, если сжатый файл превышает исходный по размеру. Самый неблагоприятный результат – увеличение на несколько байт, используемых для заголовка файла gzip, плюс на 5 байт на каждый блок из 32 КБ либо, для крупных файлов, увеличение на 0,015%. При сжатии и распаковке утилита gzip сохраняет данные о режиме и принадлежности, а также временные метки файлов.

Можно выполнить конкатенацию нескольких сжатых файлов. В этом случае утилита gunzip извлекает все компоненты одновременно. Пример:

gzip -c file1 > foo.gz gzip -c file2 >> foo.gz

При этом запись:

gunzip -c foo

эквивалентна следующей записи:

cat file1 file2

В случае повреждения одного из компонентов файла .gz другие компоненты можно восстановить (при условии удаления поврежденного компонента). Однако эффективность сжатия можно повысить путем одновременного выполнения операции для всех компонентов:

cat file1 file2 | gzip > foo.gz

Сжатие выполняется более эффективно, чем при использовании следующей команды:

gzip -c file1 file2 > foo.gz

Повторное сжатие составных файлов для усиления степени сжатия выполняется с помощью следующей команды:

zcat old.gz | gzip > new.gz

Переменные окружения:

GZIP
Набор опций по умолчанию для утилиты gzip. Эти опции интерпретируются первыми и могут быть перезаписаны явными параметрами командной строки. Пример:
export GZIP="-8 -v"

Возвращаемое значение:

2
Операция выполнена успешно, но, возможно, не на 100%; в процессе создано предупреждение.
1
Возникла ошибка; операция завершена неуспешно.
0
Операция выполнена успешно.

Предостережения:

Расширение .gz также уже используется утилитой pack в UNIX. Прозрачная распаковка для программ, для которых файлы .gz должны иметь формат "pack", достигается путем создания привязки gzip к pcat.

Классификация:

Базовые подсистемы ЗОСРВ «Нейтрино», UNIX

В ЗОСРВ «Нейтрино» редакции 2020 утилита обновлена до версии 1.10

Тематические ссылки:

bzip2, gunzip, tar,




Предыдущий раздел: Утилиты