BZ2

BZ2 फ़ाइल क्या होती है?

GZ से बेहतर कंप्रेस करता है और उसमें काफ़ी ज़्यादा समय लगाता है।

BZ2

BZ2 है क्या

BZ2 एक स्ट्रीम फ़ॉर्मेट है, जो शुरू से आख़िर तक लिखा और पढ़ा जाता है। इसका इस्तेमाल सहेजना के लिए होता है।

एक्सटेंशन .bz2 है और पूरा नाम Bzip2 Archive। दोनों उतना नहीं बताते जितना यह कि फ़ाइल अंदर क्या-क्या रख सकती है — और इस पन्ने का बाक़ी हिस्सा इसी के बारे में है।

BZ2 आया कहाँ से

यह 1996 तक पीछे जाता है।

जो फ़ॉर्मेट इतने लंबे समय तक पढ़ा जाता रहा हो, उसे वह चीज़ सौंपी जा सकती है जो आपको दस साल बाद वापस चाहिए।

विनिर्देश सार्वजनिक है

यह पूरा प्रकाशित है, इसलिए कोई भी इसे देखकर अंदाज़ा लगाने के बजाय दस्तावेज़ पढ़कर लागू कर सकता है। यही वजह है कि यह फ़ॉर्मेट इतने सारे प्रोग्रामों में मिलता है, और यही वजह है कि बीस साल पहले लिखी गई फ़ाइलें आज भी खुल जाती हैं। पर विनिर्देश का प्रकाशित होना और उसका रॉयल्टी-मुक्त होना एक बात नहीं है: जहाँ फ़ॉर्मेट किसी कोडेक को अपने अंदर लपेटता है, वहाँ पेटेंट का लाइसेंस एक अलग सवाल है, और मानक उसका जवाब नहीं देता।

यह एक पुराना फ़ॉर्मेट है

यह अब भी हर जगह खुलता है और पुराने प्रोग्राम इसे अब भी लिखते हैं, पर इसके इर्द-गिर्द नया कुछ नहीं बन रहा। जो सहेजकर रखना है उसे बदल लीजिए, और आज शुरू हो रहे किसी काम के लिए इसे मत चुनिए।

कुछ भी फेंका नहीं जाता

BZ2 फ़ाइल अपना अंदरूनी हिस्सा हूबहू सहेजती है। दोबारा सहेजने से कुछ नहीं बदलता, इसलिए इसे जितनी बार चाहें खोलिए, बदलिए और फिर से सहेजिए — नुक़सान जमा नहीं होता। यही बात इसे सौंपने का नहीं, काम करने का फ़ॉर्मेट बनाती है।

यह ठीक एक फ़ाइल रखती है

BZ2 फ़ाइल एक ही धारा को कंप्रेस करती है और फ़ाइल के नाम या फ़ोल्डर जैसी कोई चीज़ नहीं जानती। इसीलिए यह इतनी बार TAR के साथ दिखती है, जो यही छूटा हुआ ढाँचा जोड़ देता है।

इसका कंप्रेशन अनुपात आता कहाँ से है

यह एक बार में 900 KB पर काम करता है: दोहराव जितनी दूरी में फैला हो, उसे इसी दायरे के अंदर आना पड़ता है, तभी उसे दबाया जा सकता है।

यही एक संख्या एक आर्काइव फ़ॉर्मेट और दूसरे के बीच का ज़्यादातर फ़र्क़ समझा देती है। बड़ा दायरा ज़्यादा दोहराव ढूँढ़ लेता है और उसके लिए ज़्यादा वक़्त और ज़्यादा मेमोरी लेता है — पूरा सौदा बस इतना है।

अपनी हिफ़ाज़त के लिए यह क्या करती है

BZ2 फ़ाइल अपने साथ एक चेकसम, जिससे ख़राब हुई फ़ाइल चुपचाप ग़लत पढ़े जाने के बजाय पकड़ में आ जाए लाती है।

चेकसम कुछ ठीक नहीं करता। वह आपको बताता है कि फ़ाइल ख़राब है — और यही फ़र्क़ है अभी पता चलने में और उससे पता चलने में जिसे आपने वह फ़ाइल भेज दी थी।

BZ2 को खोलता कौन है

bzip2, 7-Zip और Keka इसे पढ़ते हैं, और इसी तरह के ज़्यादातर दूसरे प्रोग्राम भी।

फ़ाइल न खुले तो कसूर फ़ॉर्मेट का शायद ही कभी होता है — अक्सर प्रोग्राम ही फ़ॉर्मेट से पुराना होता है। किसी पुरानी चीज़ में बदल लेना इससे निकलने का भरोसेमंद रास्ता है, और इस वेबसाइट का बाक़ी हिस्सा इसी के लिए है।

इसे ब्राउज़र में खोलना

इसे कोई भी ब्राउज़र नहीं पढ़ता।

इसे बदलने की सबसे आम वजह यही है: फ़ॉर्मेट ख़राब है, ऐसा नहीं — बात यह है कि जहाँ आप फ़ाइल दिखाना चाहते हैं वह जगह उसे पढ़ ही नहीं सकती।

यह सौंपने का फ़ॉर्मेट है

BZ2 सौंपने के लिए बना है, इसके अंदर काम करने के लिए नहीं। इसे बदलना मुमकिन है और शायद ही कभी सुखद; समझदारी का रास्ता मूल फ़ाइल से होकर और एक नए निर्यात से होकर जाता है।

इसके साथ ग़लत क्या होता है

बार-बार आने वाली शिकायतें: यह एक ही धारा सँभालता है और फ़ोल्डर बयान नहीं कर सकता।

इनमें से कोई भी फ़ॉर्मेट से दूर रहने की वजह नहीं है। ये वे बातें हैं जिन्हें इनमें से कोई आपको चौंकाए उससे पहले जान लेना चाहिए — यह अलग दावा है, और ज़्यादा काम का।

दोनों तरफ़ से पीछे धकेला गया, और यह कहना ज़रूरी है

Bzip2 1996 में आया, gzip से साफ़ बेहतर दबाव के साथ, और लगभग एक दशक तक .tar.bz2 सोर्स रिलीज़ और आर्काइव के लिए समझदार बीच का चुनाव था। वह दौर अब ख़त्म है। xz ज़्यादा कसकर दबाता है, zstd उसी अनुपात पर तेज़ है, और दोनों bzip2 से तेज़ खुलते हैं।

तो आज मिलने वाली .bz2 लगभग हमेशा पुरानी होती है — कोई आर्काइव किया रिलीज़, सालों पहले प्रकाशित डेटासेट। नई बनाने की कोई ज़िंदा वजह नहीं बची।

यह डेटा को खोजता नहीं, छाँटता है

यहाँ का हर दूसरा कंप्रेसर — gzip, xz, 7z, zip — पीछे मुड़कर दोहराए क्रम खोजता है। Bzip2 कुछ अलग करता है: Burrows-Wheeler transform डेटा के एक ब्लॉक को इस तरह पुनर्व्यवस्थित करता है कि मिलते-जुलते अक्षर पास-पास आ जाएँ, फिर एक सादा एनकोडर उससे बनी लड़ियों का फ़ायदा उठाता है।

यह transform उलटा जा सकता है — यही आश्चर्यजनक हिस्सा है। यह इसकी विशेषताएँ समझाता है: टेक्स्ट पर अच्छा अनुपात, धीमा decompression क्योंकि transform को उलटना पड़ता है।

ब्लॉक, जो इसे रिकवर करने लायक बनाते हैं

Bzip2 स्वतंत्र ब्लॉक पर काम करता है, तयशुदा रूप से 900 KB हर एक। हर ब्लॉक अपने पड़ोसियों के बिना ही दबता और खुलता है।

इससे यहाँ किसी और के पास न होने वाला गुण मिलता है: अगर आर्काइव का कोई हिस्सा ख़राब हो जाए, बाक़ी ब्लॉक अभी भी पढ़े जा सकते हैं। gzip या xz में स्ट्रीम की शुरुआत में हुआ नुक़सान आम तौर पर उसके बाद का सब कुछ ले डूबता है।

और यह इसे समानांतर बनाते हैं

चूँकि ब्लॉक स्वतंत्र हैं, इन्हें अलग-अलग प्रोसेसर कोर पर एक साथ दबाया और खोला जा सकता है। pbzip2 और lbzip2 जैसे औज़ार इसका फ़ायदा उठाते हैं और ऐसी फ़ाइलें बनाते हैं जिन्हें सादा bzip2 भी पढ़ लेता है।

आठ कोर वाली मशीन पर यह bzip2 की सबसे बड़ी कमज़ोरी को झेलने लायक बना देता है। यही मुख्य वजह है कि यह फ़ॉर्मेट वैज्ञानिक कंप्यूटिंग में इतने लंबे समय तक टिका रहा।

दोहरा एक्सटेंशन, फिर से

Bzip2 ठीक एक स्ट्रीम दबाता है। इसमें कोई डायरेक्टरी नहीं, कोई फ़ाइल नाम नहीं, कई फ़ाइलों की कोई धारणा नहीं — gzip और xz जैसा ही आकार। यही वजह है कि .tar.bz2 सामान्य रूप है।

बिना-लपेटी .bz2 खोलने पर ठीक एक फ़ाइल मिलती है। अगर फ़ोल्डर की उम्मीद थी, आपको चाहिए आर्काइव इसके भीतर की .tar है।

नंबर असल में कहाँ पहुँचते हैं

आम टेक्स्ट और सोर्स कोड पर, bzip2 gzip से लगभग एक-चौथाई छोटा उतरता है — इस पेज के लिए नापे गए दो सोर्स संग्रह पर 25 और 27 फ़ीसद — और xz के कुछ फ़ीसद भीतर। कंप्रेशन gzip से कई गुना धीमा है; decompression और धीमा।

यही आख़िरी बात इसे सिर्फ़ पीछे छूटा हुआ नहीं, बल्कि अनाकर्षक बनाती है। फ़ाइल एक बार दबाई जाती है और कई बार खोली जाती है, इसलिए धीमा पढ़ने वाला फ़ॉर्मेट अपनी क़ीमत बार-बार वसूलता है।

यह अनदेखा रहा, और यह मायने रखता था

मूल bzip2 सालों बिना रिलीज़ के रहा, और 2019 में decompressor में एक out-of-bounds write मिली जो लंबे समय से मौजूद थी। तब से रखरखाव फिर शुरू हुआ है और यह समस्या हर मौजूदा संस्करण में ठीक है।

यह चेतावनी के तौर पर नहीं, संदर्भ के लिए जानने लायक है — .bz2 डेटा है, कोड नहीं। यह प्रकरण उन वजहों का हिस्सा है जिनसे डिस्ट्रीब्यूशन आगे बढ़ गए।

अब भी कौन बनाता है

पुरानी Linux सोर्स रिलीज़ और आर्काइव किए डिस्ट्रीब्यूशन पैकेज। वैज्ञानिक और जीनोमिक डेटासेट, जहाँ ब्लॉक-समानांतर औज़ारों ने इसे व्यावहारिक बनाया। एक दशक पहले सेट किए गए बैकअप सिस्टम।

पैटर्न प्रकाशन है, आदान-प्रदान नहीं: एक बार लिखी, कई बार डाउनलोड की गई, कभी दोबारा नहीं बनाई गई फ़ाइलें। आज कोई सहकर्मी को .bz2 नहीं भेजता।

इसे खोलना, और आगे क्या करें

हर Linux और macOS सिस्टम कमांड लाइन से bzip2 संभालता है, और 7-Zip Windows पर बिना दिक़्क़त इसे पढ़ता है। .tar.bz2 खोलना दो क़दम है जिसे ज़्यादातर औज़ार एक की तरह दिखाते हैं।

अगर सामग्री किसी व्यक्ति के पास जा रही है, ZIP में दोबारा पैक कीजिए — यह उनका कंप्यूटर बिना मदद के खोल लेता है। अगर किसी Unix सिस्टम पर वापस जा रही है, .tar.gz या .tar.xz में पैक कीजिए, जो अनुमतियाँ और सिंबॉलिक लिंक बचाते हैं।

ज़रूरी जानकारी, एक जगह

BZ2 फ़ॉर्मेट की पहचान और उसका स्रोत।
एक्सटेंशन.bz2
मीडिया टाइपapplication/x-bzip2
पहली बार प्रकाशित1996