Пользовательские команды |
gzip(1) |
gzip, gunzip, gzcat - сжатие (упаковка) и распаковка файлов
Утилита gzip уменьшает размер указанных файлов за счет кодирования по алгоритму Лемпела-Зива (Lempel-Ziv coding - LZ77). По возможности каждый файл заменяется одноименным файлом с расширением .gz, с сохранением тех же прав доступа, владельца и времени изменения. (Стандартное расширение - -gz для ОС VMS, z для MSDOS, OS/2 FAT, Windows NT FAT и Atari.) Если файлы не указаны или в качестве имени файла указан дефис (-), содержимое стандартного входного потока сжимается и направляется в стандартный выходной поток. Утилита gzip будет пытаться сжимать только обычные файлы. В частности, она будет игнорировать символические связи.
Если имя сжатого файла - слишком длинное для соответствующей файловой системы, утилита gzip его усекает. Утилита gzip пытается усечь только те части имени файла, которые длиннее 3 символов. (Часть имени ограничивается точками.) Если имя состоит только из коротких частей, усекаются самые длинные части. Например, если имена файлов должны быть не длиннее 14 символов, файл gzip.msdos.exe после сжатия получает имя gzi.msd.exe.gz. Имена не усекаются в системах, не имеющих ограничений на длину имени файла.
По умолчанию, утилита gzip сохраняет имя и время изменения сжимаемого файла. Они используются при разжатии файла с использованием опции -N. Это удобно, когда имя сжатого файла было усечено или когда после переноса не сохранилась временная отметка файла.
Сжатые файлы могут быть восстановлены в исходный вид с помощью gzip -d, gunzip или gzcat. Если исходное имя файла до сжатия не подходит для текущей файловой системы, на иснове исходного имени конструируется новое, допустимое.
Утилита gunzip принимает список файлов в командной строке и заменяет каждый файл, имя которого заканчивается суффиксом .gz, -gz, .z, -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 утилиту unzip.
Команда gzcat идентична gunzip -c. (В некоторых системах утилита zcat может устанавливаться как gzcat, чтобы сохранилась исходная связь с compress.) Утилита gzcat распаковывает либо список файлов, заданный в командной строке, либо стандартный входной поток, и записывает распакованные данные в стандартный выходной поток. Утилита gzcat будет распаковывать файлы, имеющие соответствующую сигнатуру, независимо от наличия суффикса .gz.
Утилита gzip использует алгоритм Лемпела-Зива (Lempel-Ziv), как и утилиты zip и PKZIP. Степень сжатия зависит от размера входного файла и распределения типичных подстрок. Обычно файлы типа исходных кодов программ или текстов на английском языке упаковываются на 60-70%. Степень сжатия обычно намного лучше, чем достигаемая алгоритмом LZW (который используется в compress), кодированием Хафмана (Huffman coding, используемым утилитой pack), или адаптивным кодированием Хафмана (как в утилите compact).
Сжатие выполняется всегда, даже если сжатый файл несколько больше исходного. В худшем случае файл увеличивается на несколько байтов заголовка файла gzip плюс 5 байтов на каждый блок размером 32 Кбайта, что означает рост порядка 0.015% для больших файлов. Учтите, что фактическое количество блоков диска, занимаемых файлом, практически никогда не увеличивается. Утилита gzip сохраняет права доступа, владельца и временные отметки файлов при сжатии и распаковке.
Если указана опция --name, в качестве имени, даты и времени изменения исходного несжатого файла выдаются значения, хранящиеся в сжатом файле, если они доступны.
Если указана опция --verbose для всех файлов выдаются также общие размеры и коэффициенты сжатия, за исключением случаев, когда размеры не известны. Если указана опция --quiet, заголовки и общие значения не выдаются.
Можно конкатенировать несколько сжатых файлов. В этом случае утилита gunzip будет извлекать все файлы сразу. Например:
В случае повреждения одного из компонентов файла .gz, другие компоненты можно восстановить (если удалить поврежденный компонент). Однако большей степени сжатия можно достичь, сжимая все компоненты сразу:
Если необходимо переупаковать конкатенированые файлы для получения большей степени сжатия, используйте команду следующего вида:
Если сжатый файл состоит из нескольких компонентов, размер исходного файла и контрольная сумма CRC, выдаваемые опцией --list, относятся только к последнему компоненту. Если необходимо узнать исходный размер всех компонентов, можно использовать команду:
Если необходимо создать единый архивынй файл с несколькими компонентами так, чтобы можно было извлекать независимо друг от друга, используйте архиватор типа tar или zip. Утилита GNU tar поддерживает опцию -z для прозрачного вызова утилиты gzip. Утилита gzip дополняет программу tar, но не заменяет ее.
Переменная среды GZIP может задавать набор стандартных опций для gzip. Эти опции интерпретируются первыми и могут переопределяться явными параметрами командной строки. Например:
В ОС Vax/VMS соответствующая переменная среды называется GZIP_OPT, чтобы избежать конфликта с именем программы.
Статус выхода обычно имеет значение 0; если возникает ошибка, статус выхода имеет значение 1. Если выдавались предупреждения, статус выхода имеет значение 2.
Copyright (C) 1987, 88, 89, 90, 91, 92, 1993 Free Software Foundation, Inc.
Эта программа является свободно распространяемым программным обеспечением; вы можете распространять и/или изменять ее в соответствии с условиями Генеральной общественной лицензии GNU (GNU General Public License), опубликованной Фондом свободно распространяемого программного обеспечения (Free Software Foundation); либо версии 2, либо (по вашему выбору) любой более поздней версии.
Эта программа распространяется в надежде, что она окажется полезной, но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без подразумеваемой гарантии ТОВАРНОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. Подробнее см. в Генеральной общественной лицензии GNU.
Вы должны были получить экземпляр Генеральной общественной лицензии GNU вместе с этой программой; если же нет, обратитесь за ней по адресу Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
При записи сжатых данных на ленту обычно необходимо дополнять результат нулями до границы блока. При чтении данных и передаче их для распаковки утилите gunzip, она выявляет дополнительный "мусор" после сжатых данных и, по умолчанию, выдает предупреждение. Чтобы подавить выдачу этого предупреждения, используйте опцию --quiet. Эту опцию можно задать в переменной среды GZIP, как в следующем примере:
В примере выше утилита gzip вызывается неявно опцией -z утилиты GNU tar. Проверьте, что при чтении и записи сжатых данных на ленты используется один и тот же размер блока (опция -b программы tar). (В этом примере предполагается использование GNU-версии программы tar.)
Опция --list выдает некорректные размеры, если они превышают 2 Гбайта. Опция --list выдает значение размера -1 и контрольной суммы crc - ffffffff, если сжатый файл находится на носителе, не допускающем произвольную адресацию (non seekable media).
В некоторых редких случаях опция --best дает худшее сжатие, чем стандартный уровень сжатия (-6). Некоторые особо избыточные файлы сжимаются утилитой compress лучше, чем утилитой gzip.
Исходные коды для утилиты gzip доступны в пакете SUNWgzipS.
Copyright 2002 В. Кравчук, OpenXS Initiative, перевод на русский язык
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |