أرشيف GZIP (.gz)
IETF قياسيGzip (GZ) أداة الضغط القياسية في GNU وصيغتها المرتبطة، وتُستخدم على نطاق واسع في أنظمة Unix وخوادم HTTP لضغط الملفات وموارد الويب بسرعة.
تحويل TAR إلى GZ
محول مجاني داخل المتصفح للتحويل من TAR إلى GZ. قم بتحويل الملفات فوراً على جهازك.
فحص البيانات الوصفية
تتعرف أنظمة التشغيل ومحللات الملفات على ملفات GZ من خلال فحص تسلسل البايت الثنائي البادئ:
توقيع رأس الملف على مستوى البايت (Magic Bytes)
تتعرف أنظمة التشغيل ومحللات الملفات على ملفات GZ من خلال فحص تسلسل البايت الثنائي البادئ:
التوقيع الست عشري (الإزاحة 0):
1F 8B 08تمثيل ASCII: ..\x08
التوحيد القياسي: IETF RFC 1952
المواصفات الفنية
| هيكلية الحاوية | ترويسة من 10 بايتات (التوقيع 0x1F 0x8B، والطريقة 8، والأعلام، ووقت التعديل، ونظام التشغيل)، تليها بيانات DEFLATE وتذييل من 8 بايتات |
| الضغط | خوارزمية DEFLATE (نافذة انزلاقية LZ77 وترميز هوفمان) |
| ترتيب البايتات (Endianness) | الأعداد الصحيحة في الترويسة والتذييل بترتيب البايتات الصغير (Little-Endian) |
| مساحات الألوان | لا ينطبق (حاوية أرشيف) |
| القنوات والبنية | تدفق بايتات مضغوط لملف واحد |
| الحد الأقصى للأبعاد | يُسجَّل الحجم بعد فك الضغط بترديد 2^32 (ما يتيح أطوالاً غير محدودة للتدفق) |
| الشفافية | حفظ البيانات دون فقدان، بتطابق تام على مستوى البتات |
| البث والتحميل التدرجي | يدعم فك التدفق بالتتابع مروراً واحداً عبر الأنابيب وشبكات HTTP |
مصفوفة المقارنة التقنية: GZ مقابل المنافسين
| السمة التقنية | GZ (الحالي) | BZ2 | BROTLI | ZSTD |
|---|---|---|---|---|
| سرعة فك الضغط | سريعة (~300 ميجابايت/ثانية) | بطيئة (~40 ميجابايت/ثانية) | سريعة جداً (~400 ميجابايت/ثانية) | فائقة السرعة (>1.5 جيجابايت/ثانية) |
| انتشار واسع على الويب | 100% من جميع المتصفحات والخوادم | لا يوجد دعم لمتصفحات الويب | مدعوم عبر HTTPS في جميع المتصفحات | دعم متزايد من المتصفحات والخوادم |
| تغليف ملفات متعددة | يتطلب حاوية TAR (.tar.gz) | يتطلب حاوية TAR (.tar.bz2) | تدفق خام أو حاوية مخصصة | يتطلب حاوية TAR (.tar.zst) |
| التحقق من المجموع الاختباري | CRC بعمق 32 بت (CRC-32) | CRC بعمق 32 بت لكل كتلة | لا يتضمن التدفق مجموعًا اختباريًا | تجزئة xxHash بعمق 64 بت |
أنماط التلف الشائعة ودليل الاسترداد بالنظام الست عشري
خطأ في فك الضغط: «gzip: stdin: نهاية غير متوقعة للملف».
السبب الجذري: انقطع نقل الملف قبل اكتمال تدفق DEFLATE أو تذييل CRC32 ذي الثمانية بايتات.
الاسترداد: استخرج المحتوى الجزئي باستخدام الأمر gzip -d --keep broken.gz أو أداة Gzip Extractor في File2File.app.
تحليل الأمان ومتجهات الهجوم على المحلّل
تعالج محللات Gzip ترويسات يتحكم فيها المستخدم وتدفقات DEFLATE، لذا يجب حمايتها من قنابل فك الضغط.
ناقلات الهجوم المعروفة
- قنبلة فك ضغط (zip bomb) تحوّل ميغابايتات من بيانات Gzip إلى مئات الغيغابايتات من مساحة القرص.
- قد يحدث تجاوز لسعة المخزن المؤقت عند قراءة اسم الملف الأصلي الاختياري من الترويسة.
- تجاوز للأعداد الصحيحة أثناء مقارنة قيمة فحص CRC ذي 32 بت.
أفضل الممارسات الدفاعية: فرض حدود صارمة على حجم البيانات بعد فك ضغطها وعلى الذاكرة في خدمات استيراد البيانات الآلية.
الأصول التاريخية والمحطات الرئيسية
المزايا الرئيسية والإيجابيات
- المعيار العالمي لضغط HTTP على الويب (Content-Encoding: gzip)، والمدعوم من جميع متصفحات الويب.
- يحافظ الترويس المكوّن من 10 بايتات على الطوابع الزمنية لتعديل الملف الأصلي، ويمكن أن يتضمن اسمه الأصلي اختيارياً.
- يستهلك قدراً قليلاً من موارد المعالج أثناء فك الضغط، ويعمل بسلاسة على الأجهزة المحمولة وأجهزة التوجيه منخفضة الطاقة.
القيود الفنية والسلبيات
- يضغط ملفًا واحدًا فقط؛ ولضغط عدة ملفات أو مجلدات، يجب أولًا جمعها في حاوية TAR.
- نسبة الضغط أقل من الخوارزميات الحديثة مثل Brotli وZstandard على نصوص الويب الحديثة.
- حقل الحجم غير المضغوط في نهاية الملف عدد من 32 بت بترديد 2^32، ما قد يؤدي إلى أخطاء في عرض أحجام الملفات التي تتجاوز 4 غيغابايت.
معلومات تقنية طريفة
- اختير التوقيع 0x1F 0x8B لأن 0x1F كان تاريخياً البايت الأول في ملفات Unix المضغوطة بأداة compress، بينما ميّز 0x8B ملفات Gzip.
- يستخدم أكثر من 80% من مواقع الإنترنت ضغط Gzip لإرسال صفحات الويب إلى المتصفحات.
- كتب Jean-loup Gailly شيفرة الضغط، وكتب Mark Adler شيفرة فك الضغط (inflate)؛ وحصل كلاهما على جائزة ACM للنظم البرمجية.
الأسئلة التقنية المتكررة
لماذا لا يمكنني ضغط مجلد باستخدام Gzip؟
صُمم Gzip لضغط تدفق بايتات واحد. لضغط مجلد، تجمعه أنظمة Unix أولًا في ملف .tar واحد، ثم تضغطه باستخدام Gzip لإنشاء ملف .tar.gz.
ما الفرق بين .gz و .zip؟
تنسيق .zip يجمع ملفات متعددة في أرشيف مع فهرس. أما .gz فيضغط ملفًا واحدًا فقط، وغالبًا ما يُستخدم مع tar في أنظمة Unix.
كيف يمكنني فك ضغط ملف .gz على نظام ويندوز أو ماك؟
استخدم File2File.app لفك ضغط ملفات .gz فورًا مباشرةً في متصفح الويب، دون تثبيت برامج.