BZIP2 आर्काइव (.bz2)
Bzip2 मानकBzip2 (BZ2) जूलियन सीवार्ड द्वारा बनाई गई एक क्लासिक पेटेंट-मुक्त यूनिक्स संपीड़न यूटिलिटी और फ़ाइल प्रारूप है, जो क्लासिक Gzip की तुलना में काफी बेहतर संपीड़न प्राप्त करने के लिए बरोज़-व्हीलर ट्रांसफ़ॉर्म (Burrows-Wheeler transform) का उपयोग करता है।
इंस्पेक्ट और मेटाडेटा
ऑपरेटिंग सिस्टम और फ़ाइल विश्लेषक शुरुआती बाइनरी बाइट अनुक्रम का निरीक्षण करके BZ2 फ़ाइलों की पहचान करते हैं:
बाइट-स्तरीय हेडर हस्ताक्षर (मैजिक बाइट्स)
ऑपरेटिंग सिस्टम और फ़ाइल विश्लेषक शुरुआती बाइनरी बाइट अनुक्रम का निरीक्षण करके BZ2 फ़ाइलों की पहचान करते हैं:
HEX हस्ताक्षर (ऑफ़सेट 0):
42 5A 68ASCII निरूपण: 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 |
| बाइट एंडियानेस | Big-Endian bitstream framing |
| कलर स्पेस | N/A (Byte Compression Stream) |
| चैनल और संरचना | Single-file compressed byte stream |
| अधिकतम आयाम | Unbounded stream length (supports arbitrary file sizes) |
| पारदर्शिता (Transparency) | 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 बनाम संपीड़न | Gzip से 10% - 20% छोटा | बेसलाइन मानक | Gzip से 20% - 30% छोटा | Gzip से 10% - 20% छोटा |
| डीकंप्रेसन गति | धीमी (~30-50 MB/s) | तेज़ (~300 MB/s) | मध्यम (~100 MB/s) | अत्यंत तेज़ (>1.5 GB/s) |
| ब्लॉक चेकसम | प्रति-ब्लॉक 32-बिट CRC | एकल स्ट्रीम CRC32 | स्ट्रीम CRC64 | स्ट्रीम xxHash64 |
सामान्य करप्शन मोड और हेक्स रिकवरी गाइड
निष्कर्षण 'bzip2: Data integrity error when decompressing' के साथ निरस्त हो जाता है।
मूल कारण: संपीड़ित ब्लॉक में फ़्लिप किया गया बिट जिसके कारण BWT व्युत्क्रम क्रमपरिवर्तन मैट्रिक्स CRC32 सत्यापन में विफल हो जाता है।
रिकवरी: दूषित सेक्टर के आसपास के बिना क्षतिग्रस्त ब्लॉकों को बचाने के लिए 'bzip2recover' यूटिलिटी का उपयोग करें।
सुरक्षा विश्लेषण और पार्सर अटैक वेक्टर्स
Bzip2 कार्यान्वयन में जटिल बिटस्ट्रीम छँटाई और हॉफमैन टेबल पार्सिंग शामिल हैं जिनमें ऐतिहासिक रूप से पूर्णांक अतिप्रवाह (integer overflow) खामियां आई हैं।
ज्ञात अटैक वेक्टर्स
- BWT छँटाई सरणी आवंटन में पूर्णांक अतिप्रवाह (उदा. CVE-2016-3189)।
- हॉफमैन डिकोडिंग टेबल असेंबली के दौरान सीमा से बाहर (out-of-bounds) लिखना।
- सबसे खराब स्थिति में द्विघात BWT छँटाई समय पैदा करने वाले रोग संबंधी इनपुट पैटर्न के माध्यम से सेवा से इनकार (DoS)।
सुरक्षात्मक सर्वोत्तम प्रथाएँ:
ऐतिहासिक मूल और मील के पत्थर
मुख्य लाभ और खूबियाँ
- सोर्स कोड टारबॉल्स, सिस्टम लॉग और टेक्स्ट डेटाबेस पर लगातार क्लासिक Gzip को 10% से 20% तक मात देता है।
- स्वतंत्र ब्लॉक आर्किटेक्चर (100k से 900k) में मजबूत अखंडता जांच के लिए प्रति-ब्लॉक 32-बिट CRC चेकसम शामिल हैं।
- सभी लिनक्स, BSD और macOS कमांड-लाइन वितरणों में सार्वभौमिक मूल उपलब्धता।
तकनीकी सीमाएँ और कमियाँ
- Zstandard जैसे आधुनिक एल्गोरिदम की तुलना में काफी धीमी संपीड़न और डीकंप्रेसन गति।
- केवल एकल-फ़ाइल संपीड़न: एकाधिक फ़ाइलों या निर्देशिकाओं को पैकेज करने के लिए TAR (.tar.bz2) के साथ युग्मन की आवश्यकता होती है।
- Gzip या Zstd की तुलना में डीकंप्रेसन के दौरान उच्च CPU उपयोग।
रोचक तकनीकी जानकारी
- 'BZh' मैजिक बाइट्स का मतलब 'बरोज़-व्हीलर ज़िप हॉफमैन' है, जिसके बाद एक अंक ('1' से '9') होता है जो सौ किलोबाइट में ब्लॉक आकार को दर्शाता है (उदा. 'BZh9' = 900 KB)।
- .xz में माइग्रेट करने से पहले लिनक्स कर्नेल स्रोत कोड एक दशक से अधिक समय तक विशेष रूप से .tar.bz2 प्रारूप में वितरित किया गया था।
- बरोज़-व्हीलर ट्रांसफ़ॉर्म सीधे डेटा को संपीड़ित नहीं करता है; यह वर्णों के क्रम को क्रम्यूट करता है ताकि समान अक्षर एक साथ आ जाएं, जिससे वे हॉफमैन कोडिंग द्वारा आसानी से संपीड़ित हो सकें।
अक्सर पूछे جانے वाले तकनीकी प्रश्न
.gz और .bz2 में क्या अंतर है?
.bz2 फ़ाइल का साइज़ .gz से छोटा करने के लिए Burrows-Wheeler ट्रांसफ़ॉर्म का उपयोग करता है, लेकिन इसे कंप्रेस और डीकंप्रेस करने में अधिक समय लगता है।
bzip2 में 'bzip2recover' कमांड क्यों होती है?
चूँकि bzip2 डेटा को स्वतंत्र 900 KB ब्लॉकों में कंप्रेस करता है, जिनमें से प्रत्येक का अपना CRC होता है, इसलिए फ़ाइल का कुछ हिस्सा खराब होने पर भी bzip2recover बिना नुकसान वाले ब्लॉकों को निकाल सकता है।
मैं .tar.bz2 फ़ाइल को कैसे एक्सट्रैक्ट कर सकता हूँ?
आप कमांड-लाइन टूल चलाए बिना सीधे अपने वेब ब्राउज़र में File2File.app के साथ .tar.bz2 फ़ाइलों को अनपैक कर सकते हैं।