| GZIP(1) | General Commands Manual | GZIP(1) |
gzip, gunzip, zcat — сжать или восстановить файлы
gzip [ -acdfhklLnNrtvV19 ]
[-S суффикс]
[ имя ... ]
gunzip [ -acfhklLnNrtvV ]
[-S суффикс]
[ имя ... ]
zcat [ -fhLV ] [ имя ... ]
Команда gzip уменьшает размер указанных файлов, используя кодирование Лемпеля — Зива (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 возникает ошибка, не следует полагать, что данный файл является исправным только потому, что стандартная утилита uncompress не сообщает о проблемах. Обычно это означает, что стандартная утилита uncompress не проверяет свои входные данные и формирует повреждённые выходные данные. Формат compress -H от SCO (с методом сжатия 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 использует алгоритм Лемпеля — Зива, применяемый в zip и PKZIP. Получаемая степень сжатия зависит от размера входных данных и распределения одинаковых подстрок. Как правило, такие текстовые данные, как исходный код или текст на английском языке, уменьшаются на 60–70%. Достигаемая степень сжатия обычно существенно превышает таковую при использовании LZW (применяется в compress), кодирования Хаффмана (применяется в pack) и адаптивного кодирования Хаффмана (compact).
Сжатие выполняется всегда, даже если размер полученного в результате сжатия файла немного превышает размер оригинального. В худшем случае превышение будет складываться из нескольких байтов заголовка файла gzip и дополнительных 5 байт на каждый блок размером 32 КиБ или 0,015% от общего размера для больших файлов. Фактическое количество используемых дисковых блоков практически никогда не увеличивается.
Обычно gzip сохраняет режим доступа и временную метку изменения файла при сжатии и восстановлении. При наличии у вас соответствующих полномочий gzip также сохранит владельца и группу файла.
размер compressed:
размер
сжатого
файла
размер uncompressed:
размер
несжатого
файла
ratio: степень
сжатия (0.0%,
если
степень
неизвестна)
uncompressed_name: имя
файла до
сжатия
Размер несжатого файла указывается как -1 для файлов в формате, отличном от gzip, таких как файлы .Z. Чтобы получить размер таких файлов до сжатия, вы можете использовать следующую команду:
zcat file.Z | wc -c
В сочетании с параметром --verbose также отображаются следующие поля:
method: метод
сжатия
crc: 32-битная
сумма CRC для
несжатых
данных
date и time:
временная
метка
файла до
сжатия
В настоящее время поддерживаются методы сжатия deflate, compress, lzh (SCO compress -H) и pack. Поле crc содержит ffffffff для файлов в формате, отличном от gzip.
Если указан параметр --name, в качестве имени, даты и времени файла до сжатия используются данные, сохранённые в сжатом файле, при их наличии.
Если указан параметр --verbose, будут также отображены итоговые размеры и степень сжатия для всех файлов, за исключением случаев, когда размеры некоторых файлов неизвестны. Если указан параметр --quiet, заголовки и строки с итогами не отображаются.
При восстановлении добавить .суф в начало списка суффиксов, которые могут быть использованы при получении имени выходного файла из имени входного файла.
Несколько сжатых файлов могут быть объединены. В этом случае gunzip будет извлекать все элементы вместе. Например:
gzip -c файл1 > foo.gz
gzip -c файл2 >> foo.gz
и следом
gunzip -c foo
равнозначно
cat файл1 файл2
В случае повреждения одного из элементов файла .gz остальные элементы остаются доступными для восстановления (при условии, что повреждённый элемент был удалён). Однако вы можете добиться лучшего сжатия, сжимая все элементы сразу:
cat файл1 файл2 |
gzip > foo.gz
позволяет получить более высокую степень сжатия, чем
gzip -c файл1 файл2
> foo.gz
Если вы хотите сжать объединённые файлы повторно, чтобы достичь лучшей степени сжатия, выполните:
gzip -cd старый.gz | gzip >
новый.gz
Если сжатый файл состоит из нескольких элементов, размер до сжатия и сумма CRC, сообщаемые параметром --list, будут относиться только к последнему элементу. Если вам необходимо получить размер до сжатия для всех элементов, вы можете использовать следующую команду:
gzip -cd файл.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 (май 1996). Спецификация формата «deflation» для zip представлена в P. Deutsch, DEFLATE Compressed Data Format Specification version 1.3, <https://www.ietf.org/rfc/rfc1951.txt>, Internet RFC 1951 (май 1996).
Код нормального завершения равен 0; в случае возникновения ошибки код завершения равен 1. При возникновении предупреждения код завершения равен 2.
zcat файл >
восстановленные_данные
При записи сжатых данных на ленту обычно возникает необходимость дополнять выходные данные нулями до границы блока. Когда эти данные считываются и блок целиком передаётся gunzip для восстановления, gunzip обнаруживает наличие «мусора», следующего за сжатыми данными, и по умолчанию выводит предупреждение. Вы можете использовать параметр --quiet для подавления таких предупреждений.
В редких случаях параметр --best даёт худшие результаты сжатия, чем уровень сжатия по умолчанию (-6). Для некоторых файлов с высокой степенью избыточности compress обеспечивает лучшие показатели сжатия, чем gzip.
Сообщайте
об ошибках
по адресу
bug-gzip@gnu.org
Домашняя
страница GNU gzip:
<https://www.gnu.org/software/gzip/>
Общая
помощь по
использованию
программного
обеспечения
GNU: <https://www.gnu.org/software/gethelp.ru.html>
Copyright © 1998–1999, 2001–2002, 2012,
2015–2023 Free Software Foundation, Inc.
Copyright © 1992, 1993 Jean-loup Gailly
Предоставляется разрешение на изготовление и распространение дословных копий данного руководства при условии, что на всех копиях сохранено уведомление об авторских правах и настоящее уведомление о разрешении.
Предоставляется разрешение на копирование и распространение изменённых версий данного руководства на тех же условиях, что и при дословном копировании, при условии, что вся полученная в результате производная работа распространяется на условиях уведомления о разрешении, идентичного настоящему.
Предоставляется разрешение на копирование и распространение переводов данного руководства на другой язык на тех же условиях, что указаны выше для изменённых версий, за исключением того, что настоящее уведомление о разрешении может быть указано в переводе, одобренном Фондом.
Русский перевод этой страницы руководства разработал(и) Андрей Догадкин <adogadkin@outlook.com> и Kirill Rekhov <krekhov.dev@gmail.com>
Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков.
| local |