gzip - это формат файла и программное приложение, используемое для сжатия и распаковки файлов . Программа была создана Жан-Лу Гайли и Марком Адлером как бесплатная замена программы сжатия, используемой в ранних системах Unix , и предназначена для использования GNU («g» от «GNU»). Версия 0.1 была впервые публично выпущена 31 октября 1992 года, а версия 1.0 последовала за ней в феврале 1993 года.
Автор (ы) оригинала | |
---|---|
Разработчики) | Проект GNU |
Первый выпуск | 31 октября 1992 г . |
Стабильный выпуск | 1.10 (GNU Gzip) [1] / 29 декабря 2018 г . |
Репозиторий | git |
Написано в | C |
Операционная система | Unix-подобный , Plan 9 , Inferno |
Тип | Сжатие данных |
Лицензия | GPLv3 |
Веб-сайт | www |
Декомпрессия GZip формат может быть реализован в виде потокового алгоритма , важной особенностью для веб - протоколов , обмена данными и ETL (в стандартных труб ) приложений.
Формат файла
Расширение имени файла | .gz |
---|---|
Тип интернет-СМИ | приложение / gzip [2] |
Единый идентификатор типа (UTI) | org.gnu.gnu-zip-архив |
Магическое число | 1f 8b |
Разработано | Жан-лу Гейли и Марк Адлер |
Тип формата | Сжатие данных |
Открытый формат ? | да |
Веб-сайт | gzip |
gzip основан на алгоритме DEFLATE , который представляет собой комбинацию кодирования LZ77 и Хаффмана . DEFLATE был предназначен в качестве замены для LZW и других патентного -encumbered сжатия данных алгоритмов , которые, в то время, ограниченных удобство и простота использования компресса и других популярных архиваторов.
"gzip" также часто используется для обозначения формата файла gzip, а именно:
- 10-байтовый заголовок, содержащий магическое число (
1f 8b
), метод сжатия (08
для DEFLATE), 1-байтовый флаг заголовка, 4-байтовую метку времени, флаги сжатия и идентификатор операционной системы. - необязательные дополнительные заголовки, разрешенные флагами заголовков, включая исходное имя файла, поле комментария, «дополнительное» поле и нижнюю половину контрольной суммы CRC-32 для раздела заголовка. [3]
- тело, содержащее полезную нагрузку, сжатую DEFLATE
- 8-байтовый нижний колонтитул, содержащий контрольную сумму CRC-32 и длину исходных несжатых данных по модулю 2 32 . [4]
Хотя его формат файла также позволяет объединять несколько таких потоков (сжатые файлы просто распаковываются и объединяются, как если бы они были изначально одним файлом), [5] gzip обычно используется для сжатия только отдельных файлов. [6] Сжатые архивы обычно создаются путем объединения коллекций файлов в один tar- архив (также называемый tarball ), [7] и последующего сжатия этого архива с помощью gzip. Конечный сжатый файл обычно имеет расширение .tar.gz или .tgz .
gzip не следует путать с форматом архива ZIP , который также использует DEFLATE. Формат ZIP может содержать коллекции файлов без внешнего архиватора, но он менее компактен, чем сжатые архивы tar, содержащие те же данные, поскольку он сжимает файлы по отдельности и не может использовать преимущества избыточности между файлами ( твердое сжатие ).
Реализации
Разработчики) | Фонд NetBSD |
---|---|
Репозиторий | cvsweb .netbsd .org / bsdweb .cgi / src / usr .bin / gzip / |
Написано в | C |
Тип | Сжатие данных |
Лицензия | Упрощенная лицензия BSD |
Написаны различные реализации программы. Наиболее широко известна реализация проекта GNU с использованием кода Лемпеля-Зива (LZ77). Версия gzip для OpenBSD на самом деле является программой сжатия , в которую в OpenBSD 3.4 была добавлена поддержка формата gzip. Буква «g» в этой конкретной версии означает « бесплатно» . [8] FreeBSD , DragonFly BSD и NetBSD используют реализацию под лицензией BSD вместо версии GNU; на самом деле это интерфейс командной строки для zlib, предназначенный для совместимости с параметрами реализации GNU. [9] Эти реализации изначально исходят от NetBSD и поддерживают распаковку bzip2 и формата пакета Unix .
Альтернативной программой сжатия, которая обеспечивает сжатие на 3-8% лучше, является Zopfli . Он обеспечивает сжатие, совместимое с gzip, с использованием более исчерпывающих алгоритмов за счет необходимого времени сжатия. Это не влияет на время декомпрессии.
pigz
, написанный Марком Адлером, совместим с gzip и ускоряет сжатие за счет использования всех доступных ядер и потоков ЦП. [10]
Деривативы и другое использование
Деготь утилита входит в состав большинства дистрибутивов Linux могут извлечь .tar.gz файлы, пропуская z вариант, например, деготь -zxf file.tar.gz .
zlib - это абстракция алгоритма DEFLATE в форме библиотеки, которая включает в себя поддержку как формата файла gzip, так и облегченного формата потока данных в своем API. Формат потока zlib, DEFLATE и формат файла gzip были стандартизированы соответственно как RFC 1950, RFC 1951 и RFC 1952.
Формат gzip используется в HTTP-сжатии , методе, используемом для ускорения отправки HTML и другого контента во всемирной паутине . Это один из трех стандартных форматов сжатия HTTP, как указано в RFC 2616. Этот RFC также определяет формат zlib (называемый «DEFLATE»), который равен формату gzip, за исключением того, что gzip добавляет одиннадцать байтов служебных данных в виде заголовки и трейлеры. Тем не менее, формат gzip иногда рекомендуется вместо zlib, поскольку Internet Explorer неправильно реализует стандарт и не может обрабатывать формат zlib, как указано в RFC 1950. [11]
zlib DEFLATE используется внутри формата Portable Network Graphics (PNG).
С конца 1990-х годов bzip2 , утилита сжатия файлов, основанная на алгоритме сортировки блоков, приобрела некоторую популярность в качестве замены gzip. Он создает файлы значительно меньшего размера (особенно для исходного кода и другого структурированного текста), но за счет памяти и времени обработки (до 4 раз). [12]
AdvanceCOMP и 7-Zip могут создавать файлы, совместимые с gzip, используя внутреннюю реализацию DEFLATE с лучшими степенями сжатия, чем сам gzip - за счет большего времени процессора по сравнению с эталонной реализацией. [ необходима цитата ]
Смотрите также
- Сравнение файловых архиваторов
- Свободный формат файла
- Список форматов архивов
- Список команд Unix
- Libarc
Заметки
- ^ Meyering, Джим (29 декабря 2018). "gzip-1.10 выпущен [стабильный]" . Фонд свободного программного обеспечения . Проверено 31 декабря 2018 года .
- ^ Типы мультимедиа application / zlib и application / gzip . Tools.ietf.org. DOI : 10,17487 / RFC6713 . RFC 6713 . Проверено 1 марта 2014 года .
- ^ Дойч
, Л. Питер. @aladdin.com>«Спецификация формата файла GZIP версии 4.3» . tools.ietf.org . Проверено 23 июля 2019 года . - ^ Жан-Лу Гейли. "GNU Gzip" . Gnu.org . Проверено 11 октября 2015 года .
- ^ «GNU Gzip: расширенное использование» . Gnu.org . Проверено 28 ноября 2012 года .
- ^ "Может ли gzip сжать несколько файлов в один архив?" . Gnu.org . Проверено 27 января 2010 года .
- ^ «tarball, Файл жаргона, версия 4.4.7» . Catb.org . Проверено 27 января 2010 года .
- ^ "Страница руководства OpenBSD gzip (1)" . Openbsd.org . OpenBSD . Проверено 4 февраля 2018 года .
- ^ "gzip" . Man.freebsd.org. 9 октября 2011 . Проверено 1 марта 2014 года .
- ^ Марк Адлер (2017). «pigz: параллельная реализация gzip для современных многопроцессорных многоядерных машин» . zlib.net .
- ^ Лоуренс, Эрик (21 ноября 2014 г.). «Сжатие Интернета» . Блоги MSDN> IEInternals . Microsoft .
- ^ «Инструмент сравнения: 7-zip vs bzip2 vs gzip» . Compressionratings.com . Архивировано из оригинала на 1 ноября 2014 года . Проверено 1 ноября 2014 года .
Рекомендации
- RFC 1952 - спецификация формата файла GZIP версии 4.3
Внешние ссылки
- Официальный веб-сайт