أرشيف BZIP2 (.bz2)
Bzip2 قياسيBzip2 (BZ2) هو أداة ضغط كلاسيكية خالية من براءات الاختراع لأنظمة يونكس وصيغة ملفات تم تطويرها بواسطة جوليان سيوارد، وتستخدم تحويل بوروز-ويليلر لتحقيق نسبة ضغط أكثر إحكاماً بشكل ملحوظ مقارنة بصيغة Gzip الكلاسيكية.
فحص البيانات الوصفية
تتعرف أنظمة التشغيل ومحللات الملفات على ملفات BZ2 من خلال فحص تسلسل البايت الثنائي البادئ:
توقيع رأس الملف على مستوى البايت (Magic Bytes)
تتعرف أنظمة التشغيل ومحللات الملفات على ملفات BZ2 من خلال فحص تسلسل البايت الثنائي البادئ:
التوقيع الست عشري (الإزاحة 0):
42 5A 68تمثيل ASCII: BZh
القياسية: Bzip2 Open Source Standard
المواصفات الفنية
| هيكلية الحاوية | Stream header ('BZh' + block size digit 1-9) followed by compressed data blocks and 32-bit CRC |
| الضغط | Burrows-Wheeler Transform (BWT), Move-to-Front (MTF) transform, and Huffman coding |
| ترتيب البايتات (Endianness) | Big-Endian bitstream framing |
| مساحات الألوان | N/A (Byte Compression Stream) |
| القنوات والبنية | Single-file compressed byte stream |
| الحد الأقصى للأبعاد | Unbounded stream length (supports arbitrary file sizes) |
| الشفافية | 100% bit-exact lossless data preservation |
| البث والتحميل التدرجي | Sequential block-by-block streaming with independent per-block CRC checksums |
مصفوفة المقارنة التقنية: BZ2 مقابل المنافسين
| السمة التقنية | BZ2 (الحالي) | GZ | XZ | ZSTD |
|---|---|---|---|---|
| الخوارزمية الأساسية | تحويل بوروز-ويليلر (BWT) | ديفليت (LZ77 + هوفمان) | LZMA / LZMA2 | إنتروبيا الحالة المحدودة + LZ77 |
| الضغط مقارنة بـ Gzip | أصغر بنسبة 10% إلى 20% من Gzip | المعيار الأساسي | أصغر بنسبة 20% إلى 30% من Gzip | أصغر بنسبة 10% إلى 20% من Gzip |
| سرعة فك الضغط | بطيئة (~30-50 ميجابايت/ثانية) | سريعة (~300 ميجابايت/ثانية) | متوسطة (~100 ميجابايت/ثانية) | فائقة السرعة (>1.5 جيجابايت/ثانية) |
| فحوصات الكتل | CRC 32-bit لكل كتلة | تدفق أحادي CRC32 | تدفق CRC64 | تدفق xxHash64 |
أنماط التلف الشائعة ودليل استرداد النظام السداسي
يتوقف الاستخراج برسالة 'bzip2: خطأ في سلامة البيانات عند فك الضغط'.
السبب الجذري: بت مقلوب في الكتلة المضغوطة مما يتسبب في فشل مصفوفة التحويل العكسي BWT في التحقق من صحة CRC32.
الاسترداد: استخدم أداة 'bzip2recover' لإنقاذ الكتل السليمة المحيطة بالقطاع التالف.
تحليل الأمان وناقلات هجوم المحلل اللغوي
تتضمن عمليات تنفيذ Bzip2 فرز تيار البتات المعقد وتحليل جدول هوفمان والتي عانت تاريخياً من عيوب تجاوز سعة الأعداد الصحيحة.
ناقلات الهجوم المعروفة
- تجاوز سعة الأعداد الصحيحة في تخصيص مصفوفة فرز BWT (مثل CVE-2016-3189).
- كتابة خارج الحدود أثناء تجميع جدول فك ترميز هوفمان.
- حرمان من الخدمة من خلال أنماط إدخال مرضية تسبب أسوأ حالات وقت فرز BWT التربيعي.
أفضل الممارسات الدفاعية:
الأصول التاريخية والمحطات الرئيسية
المزايا الرئيسية والإيجابيات
- يتفوق باستمرار على صيغة Gzip الكلاسيكية بنسبة 10% إلى 20% على ملفات المصدر المضغوطة tarballs، وسجلات النظام، وقواعد البيانات النصية.
- تتضمن بنية الكتل المستقلة (من 100 كيلوبايت إلى 900 كيلوبايت) فحص سلامة CRC ثنائي الاتجاه بسعة 32 بت لكل كتلة للتحقق القوي من السلامة.
- توفر أصلي عالمي عبر جميع توزيعات سطر الأوامر في لينكس، وبايز (BSD)، وماك أو إس (macOS).
القيود الفنية والسلبيات
- سرعات ضغط وفك ضغط أبطأ بشكل ملحوظ مقارنة بالخوارزميات الحديثة مثل Zstandard.
- ضغط ملف واحد فقط: يتطلب الاقتران مع TAR (tar.bz2.) لتجميع عدة ملفات أو مجلدات.
- استخدام أعلى للمعالج (CPU) أثناء فك الضغط مقارنة بـ Gzip أو Zstd.
معلومات تقنية طريفة
- بايتات السحر 'BZh' تعني 'Burrows-Wiler Zip Huffman'، يتبعها رقم (من '1' إلى '9') يوضح حجم الكتلة بمئات الكيلوبايتات (مثل 'BZh9' = 900 كيلوبايت).
- تم توزيع كود مصدر نواة لينكس حصرياً بصيغة tar.bz2. لأكثر من عقد من الزمان قبل الانتقال إلى xz.
- لا يقوم تحويل بوروز-ويليلر بضغط البيانات مباشرة؛ بل يقوم بتبديل ترتيب الحروف بحيث تتجمع الحروف المتطابقة معاً، مما يجعلها قابلة للضغط بسهولة بواسطة ترميز هوفمان.
الأسئلة التقنية المتكررة
ما الفرق بين .gz و .bz2؟
يستخدم .bz2 تحويل Burrows-Wheeler لتحقيق أحجام ملفات أصغر من .gz، ولكنه يستغرق وقتاً أطول في الضغط وفك الضغط.
لماذا يحتوي bzip2 على أمر 'bzip2recover'؟
لأن bzip2 يضغط البيانات في كتل مستقلة بحجم 900 كيلوبايت، لكل منها رمز التحقق الدوري الخاص بها (CRC)، يمكن لـ bzip2recover استخراج كتل غير تالفة حتى لو تضرر جزء من الملف.
كيف يمكنني استخراج ملف .tar.bz2؟
يمكنك فك ضغط ملفات .tar.bz2 مباشرة في متصفح الويب الخاص بك باستخدام File2File.app دون الحاجة لتشغيل أدوات سطر الأوامر.