Сжатие или распаковка файлов (UNIX)
gzip [-cdfhLlNnqrtVv19] [-S суффикс] [имя...]
gunzip [-cfhLlNnqrtvV] [имя...]
zcat [-hLV] [имя...]
Для сжатия или распаковки файлов в файловой системе RAM (/dev/shmem ) используется опция -f. |
ЗОСРВ «Нейтрино»
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
Расширение .gz
также уже используется утилитой pack в UNIX. Прозрачная распаковка для программ, для которых файлы .gz
должны иметь формат "pack", достигается путем создания привязки gzip к pcat.
Базовые подсистемы ЗОСРВ «Нейтрино», UNIX
ЗОСРВ
«Нейтрино»
редакции 2020
утилита обновлена до версии 1.10
Предыдущий раздел: Утилиты