Ubuntu bzip2 गाइड: फ़ाइल कंप्रेस और डीकंप्रेस करें

परिचय एवं तकनीकी सारांश

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

bzip2 सेटअप और मूल फ़ाइल को सुरक्षित रखते हुए कम्प्रेशन (-k, -v)

अभ्यास आरंभ करने से पहले यह सुनिश्चित कर लें कि आपके सिस्टम पर संबंधित पैकेज उपलब्ध है। यदि यह इंस्टॉल नहीं है, तो apt रिपॉजिटरी से इसे तुरंत सेटअप किया जा सकता है।

bzip2 इंस्टॉलेशन की स्थिति जांचें या इंस्टॉल करें

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

परीक्षण फ़ाइल sample1.txt का निर्माण

फ़ाइल आर्काइविंग के लिए bzip2 बुरोज़-व्हीलर ब्लॉक सॉर्टिंग एल्गोरिदम का प्रयोग करता है, जिसके परिणामस्वरूप पारंपरिक gzip की तुलना में काफी सघन कम्प्रेशन प्राप्त होता है। हालांकि, इसका मानक व्यवहार यह है कि प्रक्रिया पूरी होते ही स्रोत फ़ाइल को हटा दिया जाता है और .bz2 एक्सटेंशन वाली नई फ़ाइल बन जाती है। यदि आप कार्यप्रणाली और अनुपात का विवरण रीयल-टाइम में देखना चाहते हैं, तो -v फ्लैग का उपयोग किया जाता है।
⚙️ [महत्वपूर्ण कमांड विकल्प]

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

verbose मोड में sample1.txt का कम्प्रेशन

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

स्रोत फ़ाइल संरक्षण परीक्षण के लिए sample2.txt बनाएं

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

मूल फ़ाइल को बनाए रखते हुए bzip2 कम्प्रेशन

फाइलों की स्थिति की तुलना करने के लिए 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 शेष रहेगी।

bzip2 द्वारा फ़ाइल का डीकम्प्रेशन

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

bunzip2 के साथ आर्काइव निष्कर्षण और स्रोत संरक्षण

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

डीकम्प्रेशन के पश्चात डायरेक्टरी सामग्री का सत्यापन

बिना एक्सट्रैक्ट किए डेटा पढ़ना और stdout का उपयोग (-c, bzcat)

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

sample3.txt फ़ाइल का निर्माण

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

मानक आउटपुट पुनर्निर्देशन द्वारा कम्प्रेशन

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

bzcat के जरिए संपीड़ित सामग्री का सीधा प्रदर्शन

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

मानक आउटपुट प्रक्रिया के बाद फ़ाइल सूची

कम्प्रेशन स्तर का समायोजन (-1 से -9) और आकार की तुलना

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

बड़ी परीक्षण डेटा फ़ाइल large_data.txt बनाना

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

लेवल -1 के साथ तीव्र गति कम्प्रेशन

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

लेवल -9 के साथ अधिकतम दक्षता कम्प्रेशन

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

विभिन्न कम्प्रेशन स्तरों के फ़ाइल आकारों का विश्लेषण

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