أرشيف BZIP2 (.bz2)
Bzip2 قياسيBzip2 (BZ2) أداة ضغط كلاسيكية خالية من براءات الاختراع وتنسيق ملفات لأنظمة Unix، طوّرها جوليان سيوارد، وتستخدم تحويل بوروز-ويلر لتحقيق ضغط أفضل بكثير من Gzip الكلاسيكي.
فحص البيانات الوصفية
تتعرف أنظمة التشغيل ومحللات الملفات على ملفات BZ2 من خلال فحص تسلسل البايت الثنائي البادئ:
توقيع رأس الملف على مستوى البايت (Magic Bytes)
تتعرف أنظمة التشغيل ومحللات الملفات على ملفات BZ2 من خلال فحص تسلسل البايت الثنائي البادئ:
التوقيع الست عشري (الإزاحة 0):
42 5A 68تمثيل ASCII: BZh
التوحيد القياسي: Bzip2 Open Source Standard
المواصفات الفنية
| هيكلية الحاوية | رأس تدفق ('BZh' + رقم حجم الكتلة من 1 إلى 9)، تتبعه كتل بيانات مضغوطة وCRC بدقة 32 بت |
| الضغط | تحويل Burrows-Wheeler (BWT)، وتحويل Move-to-Front (MTF)، وترميز Huffman |
| ترتيب البايتات (Endianness) | تأطير تدفق بتات بترتيب Big-Endian |
| مساحات الألوان | N/A (Byte Compression Stream) |
| القنوات والبنية | تدفق بايتات مضغوط في ملف واحد |
| الحد الأقصى للأبعاد | طول تدفق غير محدود (يدعم أحجام الملفات الاعتباطية) |
| الشفافية | حفظ البيانات دون فقد مع تطابق بتّي بنسبة 100% |
| البث والتحميل التدرجي | بث تسلسلي كتلةً تلو الأخرى مع فحوص CRC مستقلة لكل كتلة |
مصفوفة المقارنة التقنية: BZ2 مقابل المنافسين
| السمة التقنية | BZ2 (الحالي) | GZ | XZ | ZSTD |
|---|---|---|---|---|
| الخوارزمية الأساسية | تحويل بوروز-ويليلر (BWT) | Deflate (LZ77 + هوفمان) | LZMA / LZMA2 | إنتروبيا الحالات المحدودة + LZ77 |
| الضغط مقارنة بـ Gzip | حجم أصغر بنسبة 10% إلى 20% مقارنةً بـ Gzip | المعيار الأساسي | حجم أصغر بنسبة 20% إلى 30% مقارنةً بـ Gzip | حجم أصغر بنسبة 10% إلى 20% مقارنةً بـ Gzip |
| سرعة فك الضغط | بطيئة (~30-50 ميجابايت/ثانية) | سريعة (~300 ميجابايت/ثانية) | متوسطة (~100 ميجابايت/ثانية) | فائقة السرعة (>1.5 جيجابايت/ثانية) |
| مجاميع التحقق للكتل | CRC بطول 32 بت لكل كتلة | CRC32 لتدفق واحد | تدفق CRC64 | تدفق xxHash64 |
أنماط التلف الشائعة ودليل الاسترداد بالنظام الست عشري
يتوقف الاستخراج برسالة 'bzip2: خطأ في سلامة البيانات عند فك الضغط'.
السبب الجذري: تغيّر قيمة بت في الكتلة المضغوطة، ما يؤدي إلى فشل التحقق من CRC32 عند تطبيق التحويل العكسي لـ BWT.
الاسترداد: استخدم أداة 'bzip2recover' لإنقاذ الكتل السليمة المحيطة بالقطاع التالف.
تحليل الأمان ومتجهات الهجوم على المحلّل
تتضمن تطبيقات Bzip2 عمليات معقدة لفرز تدفقات البتات وتحليل جداول هوفمان، وقد عانت تاريخيًا من عيوب تجاوز سعة الأعداد الصحيحة.
ناقلات الهجوم المعروفة
- تجاوز سعة الأعداد الصحيحة في تخصيص مصفوفة فرز BWT (مثل CVE-2016-3189).
- كتابة خارج الحدود أثناء تجميع جدول فك ترميز هوفمان.
- حرمان من الخدمة بسبب أنماط إدخال شاذة تجعل زمن فرز BWT تربيعيًا في أسوأ الحالات.
أفضل الممارسات الدفاعية: فك ضغط ملفات BZ2 باستخدام وحدات فك ترميز WASM آمنة للذاكرة تفرض حدودًا عليها.
الأصول التاريخية والمحطات الرئيسية
المزايا الرئيسية والإيجابيات
- يحقق باستمرار ضغطًا أفضل بنسبة 10% إلى 20% من Gzip الكلاسيكي على أرشيفات الشيفرة المصدرية وسجلات النظام وقواعد البيانات النصية.
- تتضمن بنية الكتل المستقلة (من 100 كيلوبايت إلى 900 كيلوبايت) مجموع تحقق CRC بطول 32 بت لكل كتلة، ما يتيح التحقق الموثوق من سلامة البيانات.
- يتوفر أصليًا في كثير من توزيعات سطر الأوامر في Linux وBSD وmacOS، ويختلف تضمينه حسب التوزيعة.
القيود الفنية والسلبيات
- سرعات ضغط وفك ضغط أبطأ بشكل ملحوظ مقارنة بالخوارزميات الحديثة مثل Zstandard.
- ضغط ملف واحد فقط: يتطلب الاقتران مع TAR (.tar.bz2) لتجميع عدة ملفات أو مجلدات.
- استخدام أعلى للمعالج (CPU) أثناء فك الضغط مقارنة بـ Gzip أو Zstd.
معلومات تقنية طريفة
- تشير البايتات المميزة 'BZh' إلى 'Burrows-Wheeler Zip Huffman'، ويتبعها رقم (من '1' إلى '9') يحدد حجم الكتلة بمئات الكيلوبايتات (مثل 'BZh9' = 900 كيلوبايت).
- وُزّعت الشيفرة المصدرية لنواة Linux حصريًا بتنسيق .tar.bz2 لأكثر من عقد، قبل الانتقال إلى .xz.
- لا يقوم تحويل بوروز-ويليلر بضغط البيانات مباشرة؛ بل يقوم بتبديل ترتيب الحروف بحيث تتجمع الحروف المتطابقة معاً، مما يجعلها قابلة للضغط بسهولة بواسطة ترميز هوفمان.
الأسئلة التقنية المتكررة
ما الفرق بين .gz و .bz2؟
يستخدم .bz2 تحويل بوروز-ويلر لتحقيق أحجام ملفات أصغر من .gz، لكنه يستغرق وقتًا أطول في الضغط وفك الضغط.
لماذا يحتوي bzip2 على أمر 'bzip2recover'؟
يمكن لـ bzip2recover استخراج الكتل السليمة حتى عند تلف جزء من الملف، لأن bzip2 يضغط البيانات في كتل مستقلة بحجم 900 كيلوبايت، لكل منها مجموع التحقق الدوري (CRC) الخاص بها.
كيف يمكنني استخراج ملف .tar.bz2؟
يمكنك فك ضغط ملفات .tar.bz2 مباشرة في متصفح الويب الخاص بك باستخدام File2File.app دون الحاجة لتشغيل أدوات سطر الأوامر.