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]
gzip использует блочное сжатие с блоками до 64 килобайт в соответствии со спецификацией "BZGF". [11]
Восстановление повреждений
Данные в блоках до первой поврежденной части архива обычно полностью читаются. Данные из блоков, которые не были разрушены повреждением, которые были обнаружены впоследствии, могут быть восстановлены с помощью сложных обходных путей. [12]
Деривативы и другое использование
Деготь утилита входит в состав большинства дистрибутивов 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. [13]
zlib DEFLATE используется внутри формата Portable Network Graphics (PNG).
С конца 1990-х годов bzip2 , утилита сжатия файлов, основанная на алгоритме сортировки блоков, приобрела некоторую популярность в качестве замены gzip. Он создает файлы значительно меньшего размера (особенно для исходного кода и другого структурированного текста), но за счет памяти и времени обработки (до 4 раз). [14]
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 года .
- ^ Дойч
, Л. Питер. «Спецификация формата файла 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 .
- ^ Compress :: BGZF - Чтение / запись заблокированных файлов GZIP (BGZF) - «Согласно спецификации BGZF размер каждого блока GZIP ограничен 64 КБ»
- ^ Восстановление поврежденного файла .gz - Жан-Лу Гайи, GZip.org
- ^ Лоуренс, Эрик (21 ноября 2014 г.). «Сжатие Интернета» . Блоги MSDN> IEInternals . Microsoft .
- ^ «Инструмент сравнения: 7-zip vs bzip2 vs gzip» . сжатиеratings.com . Архивировано из оригинала на 1 ноября 2014 года . Проверено 1 ноября 2014 года .
Рекомендации
- RFC 1952 - спецификация формата файла GZIP версии 4.3
Внешние ссылки
- Официальный веб-сайт