Linux bzcat गाइड: बिना डीकंप्रेस किए bz2 फाइलें पढ़ें

परिचय: बिना डीकंप्रेशन bz2 डेटा का त्वरित विश्लेषण

उत्पादन सर्वर पर भारी-भरकम .bz2 आर्काइव्स को बार-बार अनपैक करने से न केवल स्टोरेज की बर्बादी होती है, बल्कि मूल्यवान I/O समय भी खर्च होता है। Linux एडमिनिस्ट्रेटर के लिए bzcat एक बेहद कारगर टूल है, जो आर्काइव को डिस्क पर एक्सट्रैक्ट किए बिना उसके डेटा को सीधे स्टैंडर्ड आउटपुट (stdout) में स्ट्रीम कर देता है। इस ट्यूटोरियल में हम bzcat के कोर वर्किंग फ्लो से लेकर लॉग मॉनिटरिंग पाइपलाइन्स में इसके व्यावहारिक उपयोग का संपूर्ण विश्लेषण करेंगे।

bzip2 यूटिलिटी सेटअप और हैंड्स-ऑन टेस्ट आर्काइव तैयार करना

Ubuntu वर्कस्टेशन या सर्वर पर bzcat का इस्तेमाल सुनिश्चित करने के लिए रिपॉजिटरी अपडेट करके bzip2 पैकेज इंस्टॉल करें:

Ubuntu पर bzip2 पैकेज इंस्टॉलेशन

परीक्षण के उद्देश्य से echo कमांड की मदद से सैंपल डेटा वाली एक डमी लॉग फाइल app.log तैयार करते हैं:

परीक्षण के लिए app.log फाइल का निर्माण

मूल टेक्स्ट फाइल को सुरक्षित रखते हुए उसका कंप्रेस्ड वर्जन बनाने के लिए bzip2 -k app.log कमांड चलाएं:

मूल फाइल सुरक्षित रखते हुए bz2 आर्काइव बनाना

डायरेक्टरी में उपस्थित ओरिजिनल और कंप्रेस्ड दोनों फाइलों के स्टोरेज आकार की पुष्टि ls -lh app.log* से करें:

मूल और कंप्रेस्ड फाइलों के साइज की तुलना

bzcat कमांड की बुनियादी कार्यप्रणाली: टर्मिनल पर सीधा आउटपुट

जब आप किसी .bz2 फाइल पर bzcat चलाते हैं, तो यह फाइल सिस्टम पर कोई भी अस्थायी फाइल बनाए बिना कंप्रेस्ड बिटस्ट्रीम को डिकोड करके सीधे टर्मिनल कंसोल पर प्रदर्शित कर देता है। यह आर्किटेक्चर डिस्क स्पेस बचाता है और जीबी-साइज की लॉग्स को तुरंत पढ़ने में सक्षम बनाता है।

⚙️ [महत्वपूर्ण कमांड विकल्प]

-s : प्रोसेसिंग के दौरान गैर-जरूरी चेतावनियों को दबाकर केवल क्रिटिकल एरर्स दिखाता है।
-f : अनकंप्रेस्ड प्लेन फाइल्स या असामान्य इनपुट स्ट्रीम को भी बलपूर्वक रीड करने की अनुमति देता है।
-v : डीकंप्रेशन प्रोसेस की आंतरिक स्थिति और विस्तृत विवरण स्क्रीन पर प्रस्तुत करता है।
-k : कंपैटिबिलिटी फ्लैग के रूप में इनपुट आर्काइव को मिटने से रोकता है।

bzcat द्वारा कंप्रेस्ड फाइल का सीधा डिस्प्ले

Linux पाइपलाइन्स: grep और wc के साथ कंप्रेस्ड डेटा की प्रोसेसिंग

सिस्टम में समस्या निवारण के दौरान कंप्रेस्ड आर्काइव के भीतर विशिष्ट पैटर्न खोजने के लिए bzcat के आउटपुट को पाइप (|) ऑपरेटर के जरिए सीधे grep में भेजा जा सकता है। उदाहरण के लिए, app.log.bz2 में दर्ज ERROR एंट्रीज को बिना डीकंप्रेस किए इस तरह फिल्टर करें:

grep पाइपलाइन से आर्काइव के भीतर एरर खोजना

इसी प्रकार, कंप्रेस्ड फाइल में कुल रिकॉर्ड्स या लाइनों की संख्या तुरंत जांचने के लिए आउटपुट स्ट्रीम को wc -l टूल की ओर रीडायरेक्ट किया जा सकता है:

wc कमांड से कंप्रेस्ड लॉग्स की लाइनें गिनना

मल्टीपल bz2 आर्काइव्स को जोड़ना और आउटपुट रीडायरेक्ट करना

रोटेटेड या कई टुकड़ों में बंटी फाइलों के साथ काम करने के लिए पहले एक और सैंपल फाइल app2.log बनाकर उसे कंप्रेस करते हैं:

दूसरी टेस्ट लॉग फाइल बनाकर कंप्रेस करना

यदि आपके पास दैनिक या प्रति घंटे के आधार पर विभाजित कई .bz2 लॉग्स हैं, तो उन्हें अलग-अलग अनपैक करने के बजाय bzcat के साथ एक कतार में पास करके निरंतर स्ट्रीम के रूप में पढ़ा जा सकता है:

एक साथ कई bz2 फाइलों का आउटपुट देखना

दोनों फाइलों के स्ट्रीम आउटपुट को सिंगल कंसोलिडेटेड फाइल में बदलने के लिए शेल रीडायरेक्शन ऑपरेटर (>) का उपयोग करके merged.log में सेव करें:

रीडायरेक्शन से आर्काइव्स को सिंगल फाइल में मर्ज करना

अंत में, नव-निर्मित merged.log को cat से पढ़कर सत्यापित करें कि दोनों कंप्रेस्ड स्रोतों का डेटा सही क्रम में एकत्रित हुआ है या नहीं:

मर्ज की गई लॉग फाइल का सत्यापन

bzcat कमांड Linux सिस्टम एडमिनिस्ट्रेशन और DevOps वर्कफ़्लो में समय और डिस्क स्पेस दोनों की भारी बचत करता है। बड़े डेटा आर्काइव्स और रोटेटेड सर्वर लॉग्स की जांच करते समय इस टूल को अपनी पाइपलाइन्स में शामिल करके आप अपने इंफ्रास्ट्रक्चर की कार्यक्षमता को काफी बढ़ा सकते हैं।