Оригинальный автор(ы) | |
---|---|
Разработчик(и) | Проект GNU |
Первоначальный выпуск | 31 октября 1992 г. ( 1992-10-31 ) |
Стабильный релиз | 1.13 [1] / 19 августа 2023 г. |
Репозиторий | git.savannah.gnu.org/cgit/gzip.git |
Написано в | С |
Операционная система | Unix-подобный , Plan 9 , Inferno |
Тип | Сжатие данных |
Лицензия | GPL-3.0 или более поздняя версия |
Веб-сайт | www.gnu.org/software/gzip/ |
gzip — это формат файла и программное приложение, используемое для сжатия и распаковки файлов . Программа была создана Жаном-Лу Гайи и Марком Адлером как бесплатная программная замена для программы сжатия , использовавшейся в ранних системах Unix , и предназначалась для использования в GNU (откуда и произошло "g" в gzip). Версия 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 и другим запатентованным алгоритмам сжатия данных , которые в то время ограничивали возможности использования утилиты compress и других популярных архиваторов.
«gzip» часто также используется для обозначения формата файла gzip, который:
1f 8b
), метод сжатия ( 08
для DEFLATE), 1 байт флагов заголовка, 4-байтовую временную метку, флаги сжатия и идентификатор операционной системы.Хотя его формат файла также позволяет объединять несколько таких потоков (сжатые gzip-файлы просто распаковываются и объединяются, как если бы они изначально были одним файлом), [5] gzip обычно используется для сжатия только отдельных файлов. [6] Сжатые архивы обычно создаются путем сборки наборов файлов в один архив tar (также называемый tarball ), [7] а затем сжатия этого архива с помощью gzip. Окончательный сжатый файл обычно имеет расширение .tar.gz или .tgz .
gzip не следует путать с форматом архива ZIP , который также использует DEFLATE . Формат ZIP может содержать коллекции файлов без внешнего архиватора, но он менее компактен, чем сжатые tarballs, содержащие те же данные, поскольку он сжимает файлы по отдельности и не может использовать избыточность между файлами ( сплошное сжатие ). Формат файла gzip также не следует путать с форматом утилиты compress, основанной на LZW, с расширением .Z ; однако утилита gunzip способна распаковывать файлы .Z. [8]
Разработчик(и) | Фонд NetBSD |
---|---|
Репозиторий | cvsweb.netbsd.org/bsdweb.cgi/src/usr.bin/gzip/ |
Написано в | С |
Тип | Сжатие данных |
Лицензия | Упрощенная лицензия BSD |
Были написаны различные реализации программы. Наиболее известная из них — реализация GNU Project с использованием кодирования Lempel-Ziv (LZ77). Версия gzip от OpenBSD на самом деле является программой compress , в которую поддержка формата gzip была добавлена в OpenBSD 3.4. «g» в этой конкретной версии означает gratis . [9] FreeBSD , DragonFly BSD и NetBSD используют реализацию под лицензией BSD вместо версии GNU; на самом деле это интерфейс командной строки для zlib , предназначенный для совместимости с параметрами реализаций GNU. [10] Эти реализации изначально происходят из NetBSD и поддерживают распаковку bzip2 и формата Unix pack .
Альтернативная программа сжатия, достигающая 3-8% лучшего сжатия — Zopfli . Она достигает gzip-совместимого сжатия с использованием более исчерпывающих алгоритмов за счет требуемого времени сжатия. Она не влияет на время распаковки.
pigz
, написанный Марком Адлером, совместим с gzip и ускоряет сжатие за счет использования всех доступных ядер и потоков ЦП. [11]
Данные в блоках до первой поврежденной части архива обычно полностью читаемы. Данные из блоков, не разрушенных повреждением, которые находятся позже, могут быть восстановлены с помощью сложных обходных путей. [12]
Утилита tar , входящая в состав большинства дистрибутивов Linux, может извлекать файлы .tar.gz, передавая параметр z , например, tar -zxf file.tar.gz , где указывает на распаковку, означает извлечение и указывает имя сжатого архивного файла для извлечения. Дополнительно ( verbose ) выводит список файлов по мере их извлечения. [13]-z
-x
-f
-v
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. [14]
zlib DEFLATE используется внутри формата Portable Network Graphics (PNG).
С конца 1990-х годов bzip2 , утилита сжатия файлов, основанная на алгоритме сортировки блоков, приобрела некоторую популярность в качестве замены gzip. Она производит значительно меньшие файлы (особенно для исходного кода и другого структурированного текста), но за счет памяти и времени обработки (до 4 раз). [15]
AdvanceCOMP, Zopfli , libdeflate и 7-Zip могут создавать файлы, совместимые с gzip, используя внутреннюю реализацию DEFLATE с лучшими коэффициентами сжатия, чем сам gzip, но за счет большего процессорного времени по сравнению с эталонной реализацией. [ необходима ссылка ]
Исследование, опубликованное в 2023 году, показало, что простые методы сжатия без потерь, такие как gzip, можно объединить с классификатором k-ближайших соседей , чтобы создать привлекательную альтернативу глубоким нейронным сетям для классификации текста при обработке естественного языка . Было показано, что этот подход эквивалентен, а в некоторых случаях и превосходит традиционные подходы, такие как BERT, из-за низких требований к ресурсам, например, отсутствия требований к оборудованию GPU . [16]
В настоящее время gunzip может распаковывать файлы, созданные с помощью gzip, zip, compress или pack. Определение входного формата происходит автоматически.