Из Википедии, бесплатной энциклопедии
  (Перенаправлено с Gunzip )
Перейти к навигации Перейти к поиску

gzip - это формат файла и программное приложение, используемое для сжатия и распаковки файлов . Программа была создана Жан-Лу Гайли и Марком Адлером как бесплатная замена программы сжатия, используемой в ранних системах Unix , и предназначена для использования GNU ( буква «g» от «GNU»). Версия 0.1 была впервые публично выпущена 31 октября 1992 года, а версия 1.0 последовала за ней в феврале 1993 года.

Декомпрессия GZip формат может быть реализован в виде потокового алгоритма , важной особенностью для веб - протоколов , обмена данными и ETLстандартных труб ) приложений.

Формат файла [ править ]

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, содержащие те же данные, поскольку он сжимает файлы по отдельности и не может использовать преимущества избыточности между файлами ( твердое сжатие ).

Реализации [ править ]

Написаны различные реализации программы. Наиболее широко известна реализация проекта 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

Примечания [ править ]

  1. ^ Meyering, Джим (29 декабря 2018). "Выпущен [стабильный] gzip-1.10" . Фонд свободного программного обеспечения . Проверено 31 декабря 2018 года .
  2. ^ Типы носителей "application / zlib" и "application / gzip" . Tools.ietf.org. DOI : 10,17487 / RFC6713 . RFC 6713 . Проверено 1 марта 2014 года .
  3. ^ Дойч <[email protected]>, Л. Питер. «Спецификация формата файла GZIP версии 4.3» . tools.ietf.org . Проверено 23 июля 2019 года .
  4. Жан-Лу Гейли. "GNU Gzip" . Gnu.org . Проверено 11 октября 2015 года .
  5. ^ «GNU Gzip: Расширенное использование» . Gnu.org . Проверено 28 ноября 2012 года .
  6. ^ "Может ли gzip сжать несколько файлов в один архив?" . Gnu.org . Проверено 27 января 2010 года .
  7. ^ "tarball, Файл жаргона, версия 4.4.7" . Catb.org . Проверено 27 января 2010 года .
  8. ^ "Страница руководства OpenBSD gzip (1)" . Openbsd.org . OpenBSD . Проверено 4 февраля 2018 года .
  9. ^ "gzip" . Man.freebsd.org. 9 октября 2011 . Проверено 1 марта 2014 года .
  10. ^ Марк Адлер (2017). «pigz: параллельная реализация gzip для современных многопроцессорных многоядерных машин» . zlib.net .
  11. Лоуренс, Эрик (21 ноября 2014 г.). «Сжатие Интернета» . Блоги MSDN> IEInternals . Microsoft .
  12. ^ "Инструмент сравнения: 7-zip vs bzip2 vs gzip" . сжатиеratings.com . Архивировано из оригинала на 1 ноября 2014 года . Проверено 1 ноября 2014 года .

Ссылки [ править ]

  • RFC 1952 - спецификация формата файла GZIP версии 4.3

Внешние ссылки [ править ]

  • Официальный веб-сайт