Руководства по командной строке

Man » gzip Manual online - подробная онлайн-документация для страницы руководства gzip

🌍
gzip, gunzip, zcat - сжимает или распаковывает файлы

SYNOPSIS

gzip [ -acdfhklLnNrtvV19 ] [-S suffix] [ name ...  ]
gunzip [ -acfhklLnNrtvV ] [-S suffix] [ name ...  ]
zcat [ -fhLV ] [ name ...  ]

DESCRIPTION

Команда gzip уменьшает размер указанных файлов, используя кодирование Lempel-Ziv (LZ77). По возможности каждый файл заменяется файлом с расширением .gz, при этом сохраняются исходные права доступа, режимы, а также время доступа и модификации. (По умолчанию для MSDOS, OS/2 FAT, Windows NT FAT и Atari используется расширение z.) Если файлы не указаны, или имя файла — «-», то стандартный ввод сжимается в стандартный вывод. Команда gzip будет пытаться сжимать только обычные файлы. В частности, она игнорирует символические ссылки.

Если имя сжатого файла слишком длинное для его файловой системы, gzip усекает его. Команда gzip пытается усекать только те части имени файла, которые длиннее 3 символов. (Часть разделяется точками.) Если имя состоит только из коротких частей, то усекаются самые длинные части. Например, если длина имен файлов ограничена 14 символами, gzip.msdos.exe сжимается в gzi.msd.exe.gz. Имена не усекаются в системах, в которых нет ограничений на длину имени файла.

По умолчанию gzip сохраняет исходное имя файла и временную метку в сжатом файле. Они используются при распаковке файла с помощью опции -N. Это полезно, когда имя сжатого файла было усечено или когда временная метка не сохранялась после передачи файла.

Сжатые файлы можно восстановить в их исходную форму с помощью gzip -d или gunzip или zcat. Если исходное имя, сохраненное в сжатом файле, не подходит для его файловой системы, создается новое имя из исходного, чтобы оно было допустимым.

gunzip принимает список файлов в командной строке и заменяет каждый файл, имя которого заканчивается
на .gz, -gz, .z, -z или _z (без учета регистра) и который начинается с правильного магического
числа, на несжатый файл без исходного расширения. Gunzip также распознает специальные расширения
.tgz и .taz как сокращения для .tar.gz и .tar.Z соответственно. При сжатии gzip использует расширение
.tgz, если это необходимо, вместо того, чтобы усекать файл с расширением .tar.

gunzip может в настоящее время распаковывать файлы, созданные с помощью gzip, zip, compress, compress
-H или pack. Обнаружение формата ввода происходит автоматически. При использовании первых двух форматов
gunzip проверяет 32-битную CRC. Для pack gunzip проверяет длину несжатых данных. Стандартный формат
compress не предназначен для проверки согласованности. Однако gunzip иногда может обнаружить поврежденный
файл .Z. Если при распаковке файла .Z возникает ошибка, не следует предполагать, что файл .Z является
некорректным только потому, что стандартный uncompress не сообщает об этом. Это обычно означает, что
стандартный uncompress не проверяет свой ввод и просто выдает мусор. Формат SCO compress -H (метод
сжатия lzh) не включает CRC, но также позволяет выполнять некоторые проверки согласованности.

Файлы, созданные zip, можно распаковать с помощью gzip только в том случае, если они содержат один сжатый элемент с использованием метода «deflation». Эта функция предназначена в основном для преобразования файлов tar.zip в формат tar.gz. Чтобы извлечь zip-файл с одним элементом, используйте команду, например, gunzip <foo.zip или gunzip -S .zip foo.zip. Чтобы извлечь zip-файлы с несколькими элементами, используйте unzip вместо gunzip.

Команда zcat идентична gunzip -c. (В некоторых системах zcat может быть установлена как gzcat, чтобы сохранить исходную ссылку на compress.) zcat распаковывает либо список файлов в командной строке, либо стандартный ввод и выводит распакованные данные в стандартный вывод. zcat будет распаковывать файлы, имеющие правильный магический номер, независимо от того, имеют ли они суффикс .gz или нет.

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

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

gzip обычно сохраняет режим и время последнего изменения файла при сжатии или распаковке. Если у вас есть соответствующие права, он также сохраняет владельца и группу файла.

ОПЦИИ

-a --ascii

Режим ASCII-текста: преобразует символы конца строки, используя локальные соглашения. Этот параметр поддерживается только в некоторых не-Unix системах. Для MSDOS преобразование CR LF в LF выполняется при сжатии, а LF в CR LF — при распаковке.

-c --stdout --to-stdout

Вывод в стандартный вывод; исходные файлы остаются неизменными. Если существует несколько входных файлов, вывод состоит из последовательности независимо сжатых элементов. Чтобы получить лучшее сжатие, объедините все входные файлы перед сжатием.

-d --decompress --uncompress

Распаковать.

-f --force

Принудительное сжатие или распаковка, даже если файл имеет несколько ссылок или соответствующий файл уже существует, или если сжатые данные считываются из терминала или записываются в него. Если входные данные не находятся в формате, распознаваемом gzip, и если также указан параметр --stdout, скопируйте входные данные без изменений в стандартный вывод: позвольте zcat работать как cat. Если -f не указан и не выполняется в фоновом режиме, gzip запрашивает подтверждение, следует ли перезаписать существующий файл.


-h --help

Отобразить справочное сообщение и завершить работу.

-k --keep

Сохранять (не удалять) входные файлы во время сжатия или распаковки.

-l --list

Для каждого сжатого файла отображать следующие поля:

размер сжатого файла: размер сжатого файла
размер несжатого файла: размер несжатого файла
степень сжатия: степень сжатия (0,0%, если неизвестно)
имя несжатого файла: имя несжатого файла

Размер несжатого файла указывается как -1 для файлов, не имеющих формат gzip, таких как сжатые файлы .Z. Чтобы получить размер несжатого файла для такого файла, можно использовать:

zcat file.Z | wc -c

В сочетании с опцией --verbose также отображаются следующие поля:

метод: метод сжатия
crc: 32-битная CRC несжатых данных
дата и время: временная метка несжатого файла

В настоящее время поддерживаются следующие методы сжатия: deflate, compress, lzh (SCO compress -H) и pack. CRC указывается как ffffffff для файла, не имеющего формат gzip.

С опцией --name имя несжатого файла, дата и время берутся из сжатого файла, если они там есть.

С опцией --verbose также отображаются общие размеры и степень сжатия для всех файлов, если некоторые размеры не известны. С опцией --quiet строка заголовка и строки с итогами не отображаются.

-L --license

Отобразить лицензию gzip и завершить работу.

-n --no-name

При сжатии не сохранять по умолчанию исходное имя файла и временную метку. (Исходное имя всегда сохраняется, если имя было усечено). При распаковке не восстанавливать исходное имя файла, если оно есть (удалять только суффикс gzip из имени сжатого файла) и не восстанавливать исходную временную метку, если она есть (копировать ее из сжатого файла). Эта опция является значением по умолчанию при распаковке.

-N --name

При сжатии всегда сохранять исходное имя файла и сохранять секунды исходной временной метки, если исходный файл является обычным файлом и его временная метка не менее 1 (1 января 1970 г., 00:00:01 UTC) и менее 2**32 (7 февраля 2106 г., 06:28:16 UTC, если не учитывать високосные секунды); это значение по умолчанию. При распаковке восстанавливать из сохраненного имени файла и временной метки, если они есть. Эта опция полезна в системах, в которых существует ограничение на длину имени файла, или когда временная метка была потеряна после передачи файла.

-q --quiet

Подавлять все предупреждения.

-r --recursive

Рекурсивно перемещаться по структуре каталогов. Если какое-либо из имен файлов, указанных в командной строке, является каталогом, gzip перейдет в каталог и сжимает все файлы, которые он там найдет (или распакует их в случае gunzip).


-S .suf --suffix .suf

При сжатии используйте суффикс .suf вместо .gz. Можно использовать любой непустой суффикс, но суффиксы, отличные от .z и .gz, следует избегать, чтобы не вызывать путаницу при передаче файлов в другие системы.

При распаковке добавьте .suf в начало списка суффиксов, которые необходимо попробовать, при создании имени выходного файла на основе имени входного файла.

--synchronous

Использовать синхронный вывод. При использовании этой опции gzip с меньшей вероятностью потеряет данные в случае сбоя системы, но это может значительно замедлить работу.

-t --test

Тест. Проверить целостность сжатого файла, а затем выйти.

-v --verbose

Подробный вывод. Отображать имя и процент сжатия для каждого сжатого или распакованного файла.

-V --version

Версия. Отобразить номер версии и параметры компиляции, а затем выйти.

-# --fast --best

Регулировать скорость сжатия, используя указанную цифру #, где -1 или --fast указывает на самый быстрый метод сжатия (меньше сжатие), а -9 или --best указывает на самый медленный метод сжатия (лучшее сжатие). Уровень сжатия по умолчанию — -6 (то есть, он больше склоняется к высокому сжатию в ущерб скорости).

--rsyncable

При синхронизации сжатого файла между двумя компьютерами эта опция позволяет rsync передавать только файлы, которые были изменены в архиве, а не весь архив. Обычно, после внесения изменений в любой файл в архиве, алгоритм сжатия может создать новую версию архива, которая не соответствует предыдущей версии архива. В этом случае rsync передает всю новую версию архива на удаленный компьютер. При использовании этой опции rsync может передавать только измененные файлы, а также небольшое количество метаданных, необходимых для обновления структуры архива в измененной области.

Продвинутое использование

Несколько сжатых файлов можно объединить. В этом случае 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

Если вы хотите пережать объединенные файлы, чтобы получить лучшее сжатие, выполните:

gzip -cd old.gz | gzip > new.gz

Если сжатый файл состоит из нескольких элементов, размер распакованного файла и CRC, отображаемые опцией --list, относятся только к последнему элементу. Если вам нужен размер распакованного файла для всех элементов, вы можете использовать:

gzip -cd file.gz | wc -c

Если вы хотите создать один архивный файл с несколькими элементами, чтобы их можно было позже извлекать независимо, используйте архиватор, такой как tar или zip. GNU tar поддерживает опцию -z для прозрачного вызова gzip. gzip предназначен как дополнение к tar, а не как замена.


ОКРУЖАЮЩАЯ СРЕДА

Устаревающая переменная среды GZIP может содержать набор параметров по умолчанию для gzip. Эти параметры интерпретируются в первую очередь и могут быть перезаписаны явными параметрами командной строки. Поскольку это может вызывать проблемы при использовании скриптов, эта функция поддерживается только для параметров, которые, скорее всего, не вызовут серьезных проблем, и gzip предупреждает, если она используется. Эта функция будет удалена в будущей версии gzip.

Вместо этого можно использовать псевдоним или скрипт. Например, если gzip находится в каталоге /usr/bin, можно добавить $HOME/bin в PATH и создать исполняемый скрипт $HOME/bin/gzip, содержащий следующее:

#! /bin/sh
export PATH=/usr/bin
exec gzip -9 "$@"

СМОТРИТЕ ТАКЖЕ

znew(1), zcmp(1), zmore(1), zforce(1), gzexe(1), zip(1), unzip(1), compress(1)

Формат файла gzip указан в P. Deutsch, GZIP file format specification version 4.3, [https://www.ietf.org/rfc/rfc1952.txt], Internet RFC 1952 (May 1996). Формат сжатия данных zip указан в P. Deutsch, DEFLATE Compressed Data Format Specification version 1.3, [https://www.ietf.org/rfc/rfc1951.txt], Internet RFC 1951 (May 1996).

СООБЩЕНИЯ ОБ ОШИБКАХ

Статус выхода обычно равен 0; если произошла ошибка, статус выхода равен 1. Если произошло предупреждение, статус выхода равен 2.

Использование: gzip [-cdfhklLnNrtvV19] [-S suffix] [file ...]

Указаны недопустимые параметры в командной строке.

file: не в формате gzip

Указанный файл не сжат.

file: поврежденный ввод.

Используйте zcat для восстановления части данных. Сжатый файл поврежден. Данные до точки сбоя можно восстановить с помощью

zcat file > recover

file: сжат с использованием xx бит, может обрабатывать только yy бит

Файл был сжат (с использованием LZW) программой, которая могла работать с большим количеством бит, чем код распаковки на этом компьютере. Пережмите файл с помощью gzip, который лучше сжимает и использует меньше памяти.

file: уже имеет суффикс .gz -- не изменен

Предполагается, что файл уже сжат. Переименуйте файл и попробуйте снова.

file уже существует; вы хотите перезаписать (y или n)?

Ответьте "y", если вы хотите, чтобы выходной файл был заменен; "n", если нет.

gunzip: поврежденный ввод

Обнаружено нарушение SIGSEGV, которое обычно означает, что входной файл был поврежден.

xx.x% Процент сжатия входных данных.
(Актуально только для -v и -l.)

-- не является обычным файлом или каталогом: игнорируется

Когда входной файл не является обычным файлом или каталогом (например, символической ссылкой, сокетом, FIFO, файлом устройства), он остается без изменений.

-- имеет xx других ссылок: не изменен

Входной файл имеет ссылки; он остается без изменений. См. ln(1) для получения дополнительной информации. Используйте флаг -f, чтобы принудительно сжать файлы с несколькими ссылками.

ПРЕДОСТЕРЕЖЕНИЯ

При записи сжатых данных на ленту обычно необходимо дополнить вывод нулями до границы блока. Когда данные считываются, и весь блок передается в gunzip для распаковки, gunzip обнаруживает, что после сжатых данных есть дополнительные ненужные данные, и по умолчанию выдает предупреждение. Можно использовать опцию --quiet, чтобы подавить предупреждение.


ОШИБКИ

В некоторых редких случаях опция --best обеспечивает худшее сжатие, чем уровень сжатия по умолчанию (-6). Для некоторых файлов с высокой степенью избыточности, compress сжимает лучше, чем gzip.

СООБЩЕНИЕ ОБ ОШИБКАХ

Сообщайте об ошибках по адресу: _ Домашняя страница GNU gzip: [https://www.gnu.org/software/gzip/] Общая помощь по использованию программного обеспечения GNU: [https://www.gnu.org/gethelp/]

ЗАМЕЧАНИЕ ОБ АВТОРСКИХ ПРАВАХ

Авторское право © 1998–1999, 2001–2002, 2012, 2015–2023 Free Software Foundation, Inc. Авторское право © 1992, 1993 Jean-loup Gailly

Разрешается создавать и распространять точные копии этой документации при условии сохранения уведомления об авторских правах и этого уведомления о разрешении на всех копиях.

Разрешается копировать и распространять измененные версии этой документации на условиях, при которых разрешено создание точных копий, при условии, что вся полученная производная работа распространяется на условиях уведомления о разрешении, идентичного этому.

Разрешается копировать и распространять переводы этой документации на другой язык при соблюдении вышеуказанных условий для измененных версий, за исключением того, что это уведомление о разрешении может быть указано в переводе, утвержденном Фондом.