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