gzip
Оригинальный автор(ы) | |
---|---|
Разработчик(и) | Проект GNU |
Первоначальный выпуск | 31 октября 1992 г |
Стабильная версия | 1.13 [1] / 19 августа 2023 г. |
Репозиторий | мерзавец |
Написано в | С |
Операционная система | Unix-подобные , Plan 9 , Inferno |
Тип | Сжатие данных |
Лицензия | GPL-3.0 или новее |
Веб-сайт | www |
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 |
gzip основан на алгоритме DEFLATE , который представляет собой комбинацию LZ77 и кодирования Хаффмана . DEFLATE был задуман как замена LZW и других патентами обремененных сжатия данных алгоритмов , которые в то время ограничивали удобство использования утилиты сжатия и других популярных архиваторов.
«gzip» часто также используется для обозначения формата файла gzip, который:
- 10-байтовый заголовок, содержащий магическое число (
1f 8b
), метод сжатия (08
для DEFLATE), 1 байт флагов заголовка, 4-байтовая метка времени, флаги сжатия и идентификатор операционной системы. - необязательные дополнительные заголовки, разрешенные флагами заголовка, включая исходное имя файла, поле комментария, «дополнительное» поле и нижнюю половину контрольной суммы CRC-32 для раздела заголовка. [3]
- тело, содержащее полезную нагрузку , сжатую с помощью DEFLATE
- 8-байтовый трейлер, содержащий контрольную сумму CRC-32 и длину исходных несжатых данных по модулю 2. 32 . [4]
несколько таких потоков Хотя его формат файла также позволяет объединять (файлы, сжатые gzip, просто распаковываются и объединяются, как если бы они изначально были одним файлом), [5] gzip обычно используется для сжатия только отдельных файлов. [6] Сжатые архивы обычно создаются путем объединения коллекций файлов в один tar -архив (также называемый tarball ). [7] а затем сжимаем этот архив с помощью gzip. Окончательный сжатый файл обычно имеет расширение .tar.gz или .тгз .
gzip не следует путать с форматом архива ZIP , который также использует DEFLATE . Формат ZIP может хранить коллекции файлов без внешнего архиватора, но он менее компактен, чем сжатые архивы, содержащие те же данные, поскольку он сжимает файлы по отдельности и не может использовать преимущества избыточности между файлами ( твердое сжатие ).Формат файла gzip также не следует путать с форматом утилиты сжатия, основанной на LZW, с расширением .З ; однако утилита Gunzip может распаковывать файлы .Z. [8]
Реализации
[ редактировать ]Разработчик(и) | Фонд NetBSD |
---|---|
Репозиторий | cvsweb |
Написано в | С |
Тип | Сжатие данных |
Лицензия | Упрощенная лицензия BSD |
Написаны различные реализации программы. Наиболее известной является реализация проекта GNU с использованием кодирования Лемпеля-Зива (LZ77). OpenBSD Версия gzip для на самом деле является программой сжатия , в которую поддержка формата gzip была добавлена в OpenBSD 3.4. Буква «g» в этой конкретной версии означает « бесплатно » . [9] FreeBSD , DragonFly BSD и NetBSD используют реализацию под лицензией BSD вместо версии GNU; на самом деле это интерфейс командной строки для zlib, предназначенный для совместимости с опциями реализаций GNU. [10] Эти реализации изначально взяты из NetBSD и поддерживают распаковку bzip2 Unix и формата пакета .
Альтернативная программа сжатия, обеспечивающая сжатие на 3-8% лучше, — Zopfli . Он обеспечивает сжатие, совместимое с gzip, с использованием более исчерпывающих алгоритмов за счет требуемого времени сжатия. Это не влияет на время декомпрессии.
pigz
, написанный Марком Адлером, совместим с gzip и ускоряет сжатие за счет использования всех доступных ядер и потоков ЦП. [11]
Возмещение ущерба
[ редактировать ]Данные в блоках до первой поврежденной части архива обычно полностью читабельны. Данные из блоков, не разрушенных в результате повреждения и обнаруженных впоследствии, могут быть восстановлены с помощью сложных обходных путей. [12]
Производные и другое использование
[ редактировать ]Утилита tar , включенная в большинство дистрибутивов Linux, может извлекать файлы .tar.gz, передав вариант z , например, tar -zxf file.tar.gz , где -z
инструктирует о декомпрессии, -x
означает добычу, и -f
указывает имя сжатого архивного файла, из которого требуется извлечь. Опционально, -v
( verbose ) перечисляет файлы по мере их извлечения. [13]
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 , из-за низких требований к ресурсам, например, отсутствия требований к аппаратному обеспечению графического процессора . [16]
См. также
[ редактировать ]- Сравнение файловых архиваторов
- Бесплатный формат файла
- Список форматов архивов
- Список команд Unix
- Либарк
- Бротли
Примечания
[ редактировать ]- ^ Джим Мейеринг (19 августа 2023 г.). «выпущен gzip-1.13 [стабильный]» . Проверено 20 августа 2023 г.
- ^ Типы носителей «application/zlib» и «application/gzip» . Рабочая группа по интернет-инжинирингу. дои : 10.17487/RFC6713 . RFC 6713 . Проверено 1 марта 2014 г.
- ^ Дойч, Л. Питер (май 1996 г.). «Спецификация формата файла GZIP версии 4.3» . Рабочая группа по интернет-инжинирингу. дои : 10.17487/RFC1952 . Проверено 23 июля 2019 г.
- ^ Жан-Лу Гайи. «GNU Gzip» . Gnu.org . Архивировано из оригинала 15 октября 2015 года . Проверено 11 октября 2015 г.
- ^ «GNU Gzip: расширенное использование» . Gnu.org . Архивировано из оригинала 24 декабря 2012 года . Проверено 28 ноября 2012 г.
- ^ «Может ли gzip сжать несколько файлов в один архив?» . Gnu.org . Архивировано из оригинала 22 июля 2010 года . Проверено 27 января 2010 г.
- ^ "tarball, The Jargon File, версия 4.4.7" . Catb.org . Архивировано из оригинала 20 марта 2017 года . Проверено 27 января 2010 г.
- ^ «GNU Gzip» . Операционная система GNU и движение за свободное программное обеспечение . 5 февраля 2023 г. Проверено 3 апреля 2024 г.
Gunzip в настоящее время может распаковывать файлы, созданные с помощью gzip, zip, сжатия или упаковки. Определение входного формата происходит автоматически.
- ^ «Страница руководства OpenBSD gzip(1)» . Openbsd.org . OpenBSD . Проверено 4 февраля 2018 г.
- ^ "гзип" . Man.freebsd.org. 9 октября 2011 г. Архивировано из оригинала 17 декабря 2019 г. . Проверено 1 марта 2014 г.
- ^ Марк Адлер (2017). «pigz: параллельная реализация gzip для современных многопроцессорных многоядерных машин» . zlib.net . Архивировано из оригинала 18 декабря 2018 года . Проверено 23 декабря 2018 г.
- ^ Восстановление поврежденного файла .gz - Жан-Лу Гайи, GZip.org
- ^ «Как извлечь/разархивировать файлы tar.gz из командной строки Linux» . База знаний от phoenixNAP . 14 ноября 2019 года . Проверено 12 января 2022 г.
- ^ Лоуренс, Эрик (21 ноября 2014 г.). «Сжатие Интернета» . Блоги MSDN > IEInternals . Майкрософт . Архивировано из оригинала 28 октября 2015 года . Проверено 2 ноября 2015 г.
- ^ «Инструмент сравнения: 7-zip, bzip2 и gzip» . www.compressratings.com . Архивировано из оригинала 1 ноября 2014 года . Проверено 1 ноября 2014 г.
- ^ Цзян, Чжиин; Ян, Мэтью; Цирлин Михаил; Тан, Рафаэль; Дай, Ицинь; Лин, Джимми (июль 2023 г.). « Текстовая классификация с низкими ресурсами: метод классификации без параметров с компрессорами» . Выводы Ассоциации компьютерной лингвистики: ACL 2023 . Торонто, Канада: Ассоциация компьютерной лингвистики: 6810–6828. doi : 10.18653/v1/2023.findings-acl.426 . S2CID 260668487 .
Ссылки
[ редактировать ]- RFC 1952. Архивировано 28 июля 2019 г. на Wayback Machine - спецификация формата файла GZIP, версия 4.3.
Внешние ссылки
[ редактировать ]- Форматы архивов
- Кроссплатформенное программное обеспечение
- Бесплатное программное обеспечение для сжатия данных
- Бесплатное программное обеспечение, написанное на C.
- Программное обеспечение проекта GNU
- Команды IBM i Qshell
- Команды Inferno (операционной системы)
- Алгоритмы сжатия без потерь
- Команды Плана 9
- Архиваторы Unix и утилиты для сжатия