परिचय एवं तकनीकी सारांश
Linux ऑपरेटिंग सिस्टम में बेहतर स्टोरेज प्रबंधन के लिए bzip2 एक बेहद लोकप्रिय और शक्तिशाली आर्काइव टूल माना जाता है, जो अपने उत्कृष्ट कम्प्रेशन अनुपात के लिए जाना जाता है। इस गाइड में हम टर्मिनल के माध्यम से फ़ाइलों को कंप्रेस और डीकंप्रेस करने की व्यावहारिक प्रक्रियाओं का विश्लेषण करेंगे। विशेष रूप से यह देखेंगे कि कम्प्रेशन के दौरान मूल फ़ाइलों को स्वतः नष्ट होने से कैसे बचाया जाए तथा विभिन्न कम्प्रेशन स्तरों का स्टोरेज पर क्या प्रभाव पड़ता है। इसके अतिरिक्त, फ़ाइल निष्कर्षण के बिना डेटा की जांच के लिए bunzip2 और bzcat के व्यावहारिक उपयोग को भी चरणबद्ध तरीके से समझेंगे।
bzip2 सेटअप और मूल फ़ाइल को सुरक्षित रखते हुए कम्प्रेशन (-k, -v)
अभ्यास आरंभ करने से पहले यह सुनिश्चित कर लें कि आपके सिस्टम पर संबंधित पैकेज उपलब्ध है। यदि यह इंस्टॉल नहीं है, तो apt रिपॉजिटरी से इसे तुरंत सेटअप किया जा सकता है।

परीक्षण के उद्देश्य से echo कमांड द्वारा sample1.txt नाम से एक साधारण टेक्स्ट फ़ाइल तैयार करते हैं।

फ़ाइल आर्काइविंग के लिए bzip2 बुरोज़-व्हीलर ब्लॉक सॉर्टिंग एल्गोरिदम का प्रयोग करता है, जिसके परिणामस्वरूप पारंपरिक gzip की तुलना में काफी सघन कम्प्रेशन प्राप्त होता है। हालांकि, इसका मानक व्यवहार यह है कि प्रक्रिया पूरी होते ही स्रोत फ़ाइल को हटा दिया जाता है और .bz2 एक्सटेंशन वाली नई फ़ाइल बन जाती है। यदि आप कार्यप्रणाली और अनुपात का विवरण रीयल-टाइम में देखना चाहते हैं, तो -v फ्लैग का उपयोग किया जाता है।
⚙️ [महत्वपूर्ण कमांड विकल्प]
-d : मौजूदा .bz2 आर्काइव को अनपैक (डीकंप्रेस) करने के लिए।-k : कम्प्रेशन अथवा डीकम्प्रेशन के उपरांत मूल इनपुट फ़ाइल को सुरक्षित बनाए रखने के लिए।-v : प्रक्रिया की विस्तृत स्थिति (verbose mode) और प्राप्त कम्प्रेशन अनुपात टर्मिनल पर प्रदर्शित करने के लिए।-f : लक्ष्य फ़ाइल पहले से मौजूद होने की स्थिति में बिना किसी चेतावनी के उसे अधिलेखित (overwrite) करने के लिए।-t : आर्काइव को वास्तव में अनपैक किए बिना उसकी अखंडता (integrity) का परीक्षण करने के लिए।-c : आउटपुट को फ़ाइल में लिखने के बजाय सीधे मानक आउटपुट (stdout) पर भेजने के लिए।-1 से -9 : ब्लॉक साइज नियंत्रित करके कम्प्रेशन की गति और दक्षता का निर्धारण करने के लिए (डिफ़ॉल्ट मान -9 रहता है)।

अब यह परखने के लिए कि प्रक्रिया के दौरान मूल स्रोत फ़ाइल को नष्ट होने से कैसे बचाया जाए, sample2.txt नामक एक अन्य फ़ाइल तैयार करते हैं।

टर्मिनल में bzip2 -vk sample2.txt निष्पादित करने पर स्क्रीन पर विस्तृत प्रगति दिखाई देगी और -k फ्लैग की वजह से स्रोत डेटा भी मिटने से बच जाएगा। परिणामस्वरूप, डायरेक्टरी में मूल sample2.txt और संपीड़ित sample2.txt.bz2 दोनों फाइलें एक साथ सुरक्षित रहेंगी।

फाइलों की स्थिति की तुलना करने के लिए ls -l sample* चलाएं। आप देखेंगे कि पहले उदाहरण की स्रोत फ़ाइल हट चुकी है और केवल sample1.txt.bz2 बची है, जबकि -k फ्लैग के इस्तेमाल से sample2.txt और sample2.txt.bz2 दोनों उपलब्ध हैं।

आर्काइव निष्कर्षण और डेटा अखंडता की पुष्टि (-d, -t, bunzip2)
किसी संपीड़ित संग्रह को खोलने से पूर्व उसकी आंतरिक संरचना सही सलामत है या नहीं, यह जांचना सिस्टम प्रशासन का एक अच्छा अभ्यास है। इसके लिए bzip2 -tv sample1.txt.bz2 का उपयोग किया जाता है। -t विकल्प फ़ाइल को डिस्क पर निकाले बिना केवल CRC और डेटा ब्लॉकों की जांच करता है।

फ़ाइल को पुनः सामान्य स्वरूप में लाने के लिए bzip2 -dv sample1.txt.bz2 रन करें। चूंकि यहां -k विकल्प शामिल नहीं किया गया है, इसलिए निष्कर्षण समाप्त होते ही .bz2 संग्रह डिस्क से हट जाएगा और केवल पुनर्प्राप्त sample1.txt शेष रहेगी।

वैकल्पिक रूप से, Linux में समर्पित टूल bunzip2 का प्रयोग भी किया जा सकता है जो आंतरिक रूप से bzip2 -d के समतुल्य है। bunzip2 -vk sample2.txt.bz2 चलाने पर आर्काइव अनपैक हो जाएगा और -k के प्रभाव से मूल .bz2 फाइल भी सुरक्षित बनी रहेगी।

दोनों निष्कर्षण विधियों के बाद डायरेक्टरी की स्थिति की पुष्टि के लिए ls -l sample* कमांड चलाएं।

बिना एक्सट्रैक्ट किए डेटा पढ़ना और stdout का उपयोग (-c, bzcat)
पाइपलाइन और शेल स्क्रिप्टिंग में मानक आउटपुट (stdout) पर कंप्रेस करना अत्यंत व्यावहारिक होता है। इसके प्रदर्शन के लिए sample3.txt फ़ाइल बनाते हैं।

bzip2 -c sample3.txt > sample3.txt.bz2 कमांड निष्पादित करने पर कंप्रेस किया गया डेटा मानक आउटपुट के माध्यम से नई फ़ाइल में पुनर्निर्देशित (redirect) हो जाता है। इस तकनीक का सबसे बड़ा लाभ यह है कि बिना किसी अतिरिक्त फ्लैग के भी मूल फ़ाइल अप्रभावित रहती है।

कई बार हमें आर्काइव को अनपैक किए बिना केवल उसमें दर्ज जानकारी देखने की आवश्यकता होती है। ऐसे समय में bzcat sample3.txt.bz2 का प्रयोग किया जाता है। यह यूटिलिटी आंतरिक रूप से bzip2 -dc की तरह कार्य करती है और डिस्क स्पेस खर्च किए बिना टेक्स्ट को सीधे कंसोल पर रेंडर कर देती है।

रीडायरेक्शन विधि से उत्पन्न फ़ाइलों की स्थिति जांचने के लिए ls -l sample3* निष्पादित करें, जिससे स्पष्ट होगा कि स्रोत और संपीड़ित दोनों फाइलें सही रूप से मौजूद हैं।

कम्प्रेशन स्तर का समायोजन (-1 से -9) और आकार की तुलना
कम्प्रेशन स्तरों का कार्यक्षमता पर प्रभाव देखने के लिए seq 1 50000 > large_data.txt द्वारा एक अपेक्षाकृत बड़ी टेक्स्ट फ़ाइल जनरेट करते हैं।

न्यूनतम सीपीयू लोड और अधिकतम प्रोसेसिंग स्पीड के लिए लेवल -1 का चयन किया जाता है। bzip2 -1 -vk -c large_data.txt > large_fast.bz2 कमांड 100k ब्लॉक साइज का प्रयोग करके तुरंत परिणाम देती है।

इसके विपरीत, अधिकतम डेटा संपीड़न प्राप्त करने के लिए डिफ़ॉल्ट लेवल -9 चुना जाता है। bzip2 -9 -vk -c large_data.txt > large_best.bz2 900k ब्लॉक आकार का उपयोग करता है, जिसमें मेमोरी और समय की खपत अधिक होती है किंतु फाइल का आकार यथासंभव न्यूनतम हो जाता है।

दोनों स्तरों के बीच परिणामी आकार की तुलना के लिए ls -lh large* चलाएं। आप पाएंगे कि 283K की मूल फ़ाइल लेवल -1 पर लगभग 56K और लेवल -9 पर 67K में संकुचित होती है (संख्यात्मक डेटा संरचना के कारण ब्लॉक मैपिंग का प्रभाव भिन्न हो सकता है), जिससे प्राथमिकताओं के आधार पर उपयुक्त विकल्प चुनना सरल हो जाता है।

इस गाइड में हमने Ubuntu वातावरण में bzip2 और उससे जुड़े सहायक टूल्स के विभिन्न परिचालन परिदृश्यों का अवलोकन किया। अपने वर्कफ़्लो की आवश्यकतानुसार सही विकल्पों का चयन करके आप Linux सिस्टम में डिस्क स्पेस और डेटा ट्रांसफर को अधिक प्रभावी बना सकते हैं।