Оригинальный автор (ы) | |
---|---|
Разработчики) | Проект GNU |
изначальный выпуск | 31 октября 1992 г . |
Стабильный выпуск | 1.10 (GNU Gzip) [1] / 29 декабря 2018 г . |
Репозиторий | git |
Написано в | C |
Операционная система | Unix-подобный , Plan 9 , Inferno |
Тип | Сжатие данных |
Лицензия | GPLv3 |
Интернет сайт | www |
gzip - это формат файла и программное приложение, используемое для сжатия и распаковки файлов . Программа была создана Жан-Лу Гайли и Марком Адлером как бесплатная замена программы сжатия, используемой в ранних системах Unix , и предназначена для использования GNU ( буква «g» от «GNU»). Версия 0.1 была впервые публично выпущена 31 октября 1992 года, а версия 1.0 последовала за ней в феврале 1993 года.
Декомпрессия GZip формат может быть реализован в виде потокового алгоритма , важной особенностью для веб - протоколов , обмена данными и ETL (в стандартных труб ) приложений.
Формат файла [ править ]
Расширение имени файла | .gz |
---|---|
Тип интернет-СМИ | приложение / gzip [2] |
Единый идентификатор типа (UTI) | org.gnu.gnu-zip-архив |
Магическое число | 1f 8b |
Разработан | Жан-лу Гейли и Марк Адлер |
Тип формата | Сжатие данных |
Открытый формат ? | да |
Интернет сайт | gzip .org (устарело) |
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 файлы, передавая г опции, например, деготь -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
Примечания [ править ]
- ^ Meyering, Джим (29 декабря 2018). "Выпущен [стабильный] gzip-1.10" . Фонд свободного программного обеспечения . Проверено 31 декабря 2018 года .
- ^ Типы носителей "application / zlib" и "application / gzip" . Tools.ietf.org. DOI : 10,17487 / RFC6713 . RFC 6713 . Проверено 1 марта 2014 года .
- ^ Дойч <[email protected]>, Л. Питер. «Спецификация формата файла 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" . сжатиеratings.com . Архивировано из оригинала на 1 ноября 2014 года . Проверено 1 ноября 2014 года .
Ссылки [ править ]
- RFC 1952 - спецификация формата файла GZIP версии 4.3
Внешние ссылки [ править ]
- Официальный веб-сайт