GZIP архив (.gz)
IETF СтандартGzip (GZ) е стандартната GNU помощна програма за компресиране и файлов формат, разпространен в операционните системи Unix и HTTP сървърите в интернет за бързо компресиране на файлове и уеб ресурси.
Конвертиране от TAR към GZ
Безплатен конвертор от TAR към GZ в браузъра. Конвертирайте файлове незабавно на вашето устройство.
Проверка и метаданни
Операционните системи и файловите анализатори идентифицират GZ файлове чрез проверка на началната двоична байтова последователност:
Байтов подпис на заглавката (сигнатурни байтове)
Операционните системи и файловите анализатори идентифицират GZ файлове чрез проверка на началната двоична байтова последователност:
HEX ПОДПИС (ОФСЕТ 0):
1F 8B 08ASCII ПРЕДСТАВЯНЕ: ..\x08
Стандартизация: IETF RFC 1952
Технически спецификации
| Контейнерна архитектура | 10-байтова заглавна част (магически байтове 0x1F 0x8B, метод 8, флагове, mtime, ОС), последвана от поток DEFLATE и 8-байтов долен колонтитул |
| Компресия | Алгоритъм DEFLATE (плъзгащ се прозорец LZ77 и кодиране на Хъфман) |
| Поредност на байтовете (Endianness) | Целите числа в заглавката и крайния блок са в ред от младшия към старшия байт (Little-Endian). |
| Цветови пространства | Неприложимо (контейнер за архиви) |
| Канали и структура | Компресиран поток от байтове на един файл |
| Максимални размери | Некомпресираният размер се записва по модул 2^32 (дължината на потока не е ограничена) |
| Прозрачност | 100% беззагубно възстановяване на данните до последния бит |
| Поточно предаване и прогресивно зареждане | Последователно поточно предаване в един проход през канали и HTTP мрежи |
Техническа сравнителна матрица: GZ спрямо конкуренти
| Технически атрибут | GZ (Текущ) | BZ2 | BROTLI | ZSTD |
|---|---|---|---|---|
| Скорост на декомпресия | Бърза (~300 MB/s) | Бавна (~40 MB/s) | Много бърза (~400 MB/s) | Ултра бърза (>1.5 GB/s) |
| Широко използване в уеба | Широка поддръжка в браузърите и сървърите; кодирането на съдържанието се договаря за всяка заявка | Нулева поддръжка от уеб браузъри | Поддържа се от много браузъри чрез HTTPS; поддръжката зависи от версията | Нарастваща поддръжка в браузъри и сървъри |
| Пакетиране на множество файлове | Изисква TAR контейнер (.tar.gz) | Изисква TAR контейнер (.tar.bz2) | Суров поток или специален контейнер | Изисква TAR контейнер (.tar.zst) |
| Проверка на контролна сума | 32-битов CRC (CRC-32) | 32-битов CRC на блок | Няма вградено в потока | 64-битов xxHash |
Често срещани видове повреди и ръководство за възстановяване на шестнадесетични данни
Грешка при извличане: 'gzip: stdin: unexpected end of file'.
Първопричина: Преждевременно прекратяване на прехвърлянето на файла, прекъсващо DEFLATE потока или 8-байтовия CRC32 завършващ блок.
Възстановяване: Извлечете част от съдържанието с помощта на 'gzip -d --keep broken.gz' или File2File.app Gzip Extractor.
Анализ на сигурността и вектори на атака към парсера
Парсерите на Gzip обработват контролирани от потребителя заглавия и DEFLATE битови потоци, които трябва да бъдат защитени срещу декомпресионни бомби.
Известни вектори на атака
- Декомпресионна бомба (zip бомба), разширяваща мегабайти Gzip данни в стотици гигабайти дисково пространство.
- Препълване на буфера при четене на опционалния низ с оригиналното име на файла от заглавието.
- Препълване на цяло число по време на сравнението на 32-битовата CRC проверка.
Най-добри практики за защита: Задайте строги квоти за декомпресия и ограничения на паметта в автоматизирани услуги за приемане на данни.
Исторически произход и етапи
Основни предимства
- Широко поддържано HTTP кодиране на съдържание, но клиентите и сървърите може да договорят друго кодиране или да не използват компресия.
- Запазва оригиналните времеви отметки за промяна на файла и опционални оригинални имена на файлове вътре в 10-байтовото заглавие.
- Малко натоварване на процесора при декомпресия, което позволява безпроблемна работа на мобилни устройства и рутери с ниска мощност.
Технически ограничения и минуси
- Компресиране само на един файл: не може да компресира множество файлове или директории, без те първо да бъдат обединени в TAR контейнер.
- Коефициентът на компресия е по-нисък от този на съвременните алгоритми като Brotli и Zstandard при модерен уеб текст.
- Полето в края на файла за размера на некомпресираните данни е 32-битово и показва размера по модул 2^32, което води до грешки при показване за файлове, по-големи от 4 GB.
Интересни технически факти
- Магическите байтове 0x1F 0x8B са избрани, защото исторически 0x1F е бил първият байт на Unix файловете 'compress', докато 0x8B идентифицира Gzip.
- Gzip остава често използван избор за компресиране на уеб отговори; употребата му варира според сайта и отговора.
- Жан-Луп Гайли написва кода за компресиране, докато Марк Адлер написва кода за декомпресиране (inflate); и двамата получават наградата за софтуерни системи на ACM.
Често задавани технически въпроси
Защо Gzip не може да компресира директно папка?
Gzip е проектиран да компресира един единствен поток от байтове. За да компресират папка, системите Unix първо обединяват папката в един .tar файл, след което я компресират с Gzip, за да създадат .tar.gz файл.
Каква е разликата между .gz и .zip?
.zip е архивен формат, който опакова множество файлове заедно с индекс на директорията. .gz компресира само един единствен файл и обикновено се комбинира с tar на Unix системите.
Как мога да декомпресирам .gz файл на Windows или Mac?
Използвайте File2File.app за незабавно декомпресиране на .gz файлове директно във вашия уеб браузър без инсталиране на софтуер.