آرشیو BZIP2 (.bz2)

Bzip2 استاندارد

فرمت Bzip2 (BZ2) یک ابزار فشرده‌سازی و فرمت فایل کلاسیک و بدون پتاع (مختص یونیکس) است که توسط ژولیان سیوارد (Julian Seward) ایجاد شد و با استفاده از تبدیل باروز-ویلر (Burrows-Wheeler)، فشرده‌سازی بسیار فشرده‌تری نسبت به Gzip کلاسیک حاصل می‌کند.

بررسی و فراداده

سیستم‌عامل‌ها و تحلیلگرهای فایل، فایل‌های BZ2 را با بررسی توالی بایت‌های دودویی ابتدایی شناسایی می‌کنند:

انتخاب یا رها کردن فایل‌ها در اینجا

تبدیل ۱۰۰٪ خصوصی در مرورگر - فایل‌ها هرگز دستگاه شما را ترک نمی‌کنند

یا جای‌گذاری کنید Ctrl+V
تضمین حریم خصوصی بدون انتقال شبکه: صفر بایت به سرورهای خارجی آپلود می‌شود. تمام پردازش‌ها به صورت محلی در سندباکس مرورگر شما انجام شد.

امضای هدر در سطح بایت (Magic Bytes)

سیستم‌عامل‌ها و تحلیلگرهای فایل، فایل‌های BZ2 را با بررسی توالی بایت‌های دودویی ابتدایی شناسایی می‌کنند:

امضای HEX (آفست 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 (فعلی)GZXZZSTD
الگوریتم اصلیتبدیل باروز-ویلر (BWT)دیفلیت (LZ77 + هافمن)LZMA / LZMA2آنتروپی حالت متناهی + LZ77
فشرده‌سازی در مقایسه با Gzip۱۰٪ تا ۲۰٪ کوچک‌تر از Gzipاستاندارد پایه۲۰٪ تا ۳۰٪ کوچک‌تر از Gzip۱۰٪ تا ۲۰٪ کوچک‌تر از Gzip
سرعت خارج‌سازیکند (~۳۰ تا ۵۰ مگابایت بر ثانیه)سریع (~۳۰۰ مگابایت بر ثانیه)متوسط (~۱۰۰ مگابایت بر ثانیه)بسیار سریع (>۱.۵ گیگابایت بر ثانیه)
چک‌سام‌های بلوکCRC ۳۲ بیتی به ازای هر بلوکCRC32 جریان تکCRC64 جریانxxHash64 جریان

حالت‌های رایج خرابی و راهنمای بازیابی هگز

استخراج با خطای 'bzip2: Data integrity error when decompressing' متوقف می‌شود.

علت ریشه‌ای: بیت معکوس شده در بلوک فشرده شده که باعث می‌شود ماتریس جایگشت معکوس BWT در اعتبارسنجی CRC32 شکست بخورد.

بازیابی: از ابزار 'bzip2recover' برای بازیابی بلوک‌های آسیبی ندیده اطراف بخش آسیب‌دیده استفاده کنید.

تحلیل امنیتی و بردارهای حمله تجزیه‌کننده (Parser)

پیاده‌سازی‌های Bzip2 شامل مرتب‌سازی پیچیده جریان بیت و تجزیه جدول هافمن است که از نظر تاریخی دچار ایرادات سرریز عدد صحیح (integer overflow) بوده‌اند.

بردارهای حمله شناخته‌شده

  • سرریز عدد صحیح در تخصیص آرایه مرتب‌سازی BWT (به عنوان مثال CVE-2016-3189).
  • نوشتن خارج از محدوده (Out-of-bounds) در حین مونتاژ جدول رمزگشایی هافمن.
  • حمله محرومیت از سرویس (DoS) از طریق الگوهای ورودی نابهنجار که باعث بدترین زمان‌های مرتب‌سازی درجه دوم BWT می‌شود.

بهترین روش‌های پدافندی:

تاریخچه و نقاط عطف

2019فدریکو منا کینترو (Federico Mena Quintero) نگهداری کدبیس bzip2 را تحت ابتکارات bzip3 و متن‌باز مدرن به روز رسانی کرد.
2000نسخه ۱.۰ منتشر شد و فرمت bzip2 را در تمام توزیع‌های لینوکس و مدیران بسته‌ها پایدار کرد.
1996ژولیان سیوارد bzip2 0.15 را برای جایگزینی فرمت اولیه bzip که دارای نگرانی‌های مربوط به ثبت اختراع بود، منتشر کرد.

مزایا و نقاط قوت کلیدی

  • به طور مداوم ۱۰٪ تا ۲۰٪ بهتر از Gzip کلاسیک روی تاربال‌های کد منبع، گزارش‌های سیستم (system logs) و پایگاه‌های داده متنی عمل می‌کند.
  • معماری بلوک مستقل (۱۰۰ کیلوبایت تا ۹۰۰ کیلوبایت) شامل چک‌سام‌های CRC ۳۲ بیتی به ازای هر بلوک برای بررسی دقیق صحت داده‌ها است.
  • دسترسی بومی سراسری در تمام توزیع‌های خط فرمان لینوکس، BSD و macOS.

محدودیت‌ها و معایب فنی

  • سرعت فشرده‌سازی و خارج‌سازی (Decompression) به‌طور قابل‌توجهی کندتر در مقایسه با الگوریتم‌های مدرن مانند Zstandard.
  • فقط فشرده‌سازی تک‌فایلی: برای بسته‌بندی چند فایل یا پوشه، نیاز به جفت شدن با TAR (.tar.bz2) دارد.
  • مصرف پردازنده (CPU) بالاتر در طول خارج‌سازی در مقایسه با Gzip یا Zstd.

نکات فنی جالب

  • بایت‌های جادویی 'BZh' مخفف عبارت 'Burrows-Wheeler Zip Huffman' هستند که به دنبال آن یک رقم (از '۱' تا '۹') نشان‌دهنده اندازه بلوک به صدها کیلوبایت است (به عنوان مثال 'BZh9' = ۹۰۰ کیلوبایت).
  • کد منبع هسته لینوکس بیش از یک دهه قبل از مهاجرت به .xz، منحصراً با فرمت .tar.bz2 توزیع می‌شد.
  • تبدیل باروز-ویلر داده‌ها را به طور مستقیم فشرده نمی‌کند؛ بلکه ترتیب کاراکترها را جایگشت می‌دهد تا حروف یکسان در کنار هم جمع شوند و با کدگذاری هافمن به راحتی قابل فشرده‌سازی باشند.

سوالات فنی متداول

تفاوت بین پسوندهای .gz و .bz2 چیست؟

فرمت .bz2 برای دستیابی به حجم فایل‌های کوچکتر نسبت به .gz از تبدیل باروز-ویلر استفاده می‌کند، اما فشرده‌سازی و فشرده‌زدایی آن زمان بیشتری می‌برد.

چرا bzip2 دارای دستور 'bzip2recover' است؟

از آنجایی که bzip2 داده‌ها را در بلوک‌های مستقل ۹۰۰ کیلوبایتی که هر کدام CRC مخصوص به خود را دارند فشرده می‌کند، دستور bzip2recover می‌تواند حتی در صورت خراب شدن بخشی از فایل، بلوک‌های سالم را استخراج کند.

چگونه می‌توانم یک فایل .tar.bz2 را استخراج کنم؟

شما می‌توانید فایل‌های .tar.bz2 را مستقیماً در مرورگر وب خود با استفاده از File2File.app و بدون نیاز به اجرای ابزارهای خط فرمان استخراج کنید.