Архів GZIP (.gz)
IETF СтандартGzip (GZ) - це стандартна утиліта та формат файлів стиснення GNU, який повсюдно використовується в операційних системах Unix та інтернет-серверах HTTP для швидкого стиснення файлів і вебконтенту.
Конвертувати з TAR у GZ
Безкоштовний конвертер з TAR у GZ у браузері. Миттєво конвертуйте файли на своєму пристрої.
Аналіз та метадані
Операційні системи та аналізатори файлів ідентифікують файли GZ, перевіряючи початкову послідовність бінарних байтів:
Сигнатура заголовка на байтовому рівні (Magic Bytes)
Операційні системи та аналізатори файлів ідентифікують файли GZ, перевіряючи початкову послідовність бінарних байтів:
ШІСТНАДЦЯТКОВА СИГНАТУРА (ЗСУВ 0):
1F 8B 08ASCII-УЯВЛЕННЯ: ..\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 |
Типові режими пошкодження та посібник з відновлення в шістнадцятковому форматі
Помилка витягнення: '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 видаляє шар стиснення, відкриваючи нестиснену колекцію файлів і папок.