परिचय एवं अवलोकन
सर्वर मैनेजमेंट और डेटा ट्रांसफर के दौरान डिस्क स्पेस बचाना और फाइलों को सुव्यवस्थित पैकेज में बांधना हर सिस्टम एडमिनिस्ट्रेटर के लिए जरूरी होता है। लिनक्स वातावरण में zip यूटिलिटी डायरेक्टरी और बड़े डेटासेट्स को कंप्रेस करने का सबसे लोकप्रिय टूल है। इस गाइड में हम आवश्यक पैकेज इंस्टॉलेशन से लेकर मल्टीपल फाइल्स, रिकर्सिव डायरेक्टरी कंप्रेशन, आर्काइव एक्सट्रैक्शन और चुनिंदा फाइलों को अलग रखने (exclude) जैसे प्रैक्टिकल वर्कफ़्लो पर विस्तार से चर्चा करेंगे।
zip व unzip टूल का इंस्टॉलेशन और बुनियादी फाइल कंप्रेशन
सिस्टम पर आर्काइविंग वर्कफ़्लो शुरू करने के लिए हमें सबसे पहले एपीटी रिपॉजिटरी अपडेट करके zip और unzip बाइनरी इंस्टॉल करनी होगी:

टेस्टिंग के लिए एक अलग वर्किंग डायरेक्टरी तैयार करते हैं और सीधे उसमें स्विच कर लेते हैं:

अभ्यास हेतु पहला सैंपल टेक्स्ट डॉक्यूमेंट तैयार करने के लिए यह कमांड चलाएं:

इसी प्रकार आर्काइव में जोड़ने के लिए दूसरी टेक्स्ट फाइल भी बना लेते हैं:

zip कमांड अलग-अलग फाइलों और फोल्डरों को कंप्रेस करके एक पोर्टेबल .zip आर्काइव तैयार करता है। नीचे दी गई कमांड के जरिए file1.txt और file2.txt को मिलाकर archive.zip जनरेट किया गया है।
⚙️ [अक्सर इस्तेमाल होने वाले प्रमुख फ्लैग्स]
-r : सब-डायरेक्टरी और उनकी आंतरिक फाइलों को रिकर्सिव रूप से शामिल करता है।-e : सुरक्षा के लिए आर्काइव पर इंटरएक्टिव पासवर्ड प्रोटेक्ट लगाता है।-u : पहले से बने आर्काइव में सिर्फ बदली हुई या नई फाइलों को अपडेट करता है।-m : कंप्रेशन पूरा होने पर ओरिजिनल सोर्स फाइलों को अपने आप रिमूव कर देता है।-d : आर्काइव खोले बिना उसके अंदर से चुनिंदा फाइल को डिलीट करता है।-q : आउटपुट को म्यूट करके शांत (quiet) मोड में प्रोसेस चलाता है।-0 ~ -9 : कंप्रेशन स्तर सेट करता है (0 यानी केवल स्टोरेज बिना कंप्रेशन, 9 यानी अधिकतम कंप्रेशन)।

तैयार हुए archive.zip फाइल का साइज और फ़ाइल परमिशन देखने के लिए ls का उपयोग करें:

डायरेक्टरी रिकर्सिव कंप्रेशन (-r) और उच्चतम कंप्रेशन स्तर (-9)
डायरेक्टरी स्ट्रक्चर टेस्ट करने के लिए पुनः अपने बेस फोल्डर ~/zip_demo में आ जाते हैं:

नेस्टेड डायरेक्टरी एनवायरनमेंट बनाने के लिए project/src और project/logs डायरेक्टरी तैयार करते हैं:

सोर्स कोड के नमूने के तौर पर project/src/app.js फाइल तैयार करते हैं:

इसी तरह लॉग डेटा दर्शाने के लिए project/logs/app.log फाइल लिख लेते हैं:

पूरे फोल्डर स्ट्रक्चर को बिना किसी फाइल को छोड़े कंप्रेस करने के लिए -r (recursive) फ्लैग जरूरी है। project फोल्डर के सभी सब-लेवेल्स को project.zip में समेटने की प्रक्रिया नीचे दी गई है:

अगर स्टोरेज स्पेस या नेटवर्क बैंडविड्थ बचाना प्राथमिकता हो, तो -9 स्विच लगाकर सीपीयू को मैक्सिमम कंप्रेशन रेश्यो के साथ प्रोसेस करने का निर्देश दिया जा सकता है:

डिफ़ॉल्ट कंप्रेशन (project.zip) और मैक्सिमम कंप्रेशन (project_max.zip) के बीच फाइल साइज और आउटपुट का अंतर जांचते हैं:

आर्काइव कंटेंट की प्रीव्यू सूची (-l) और तय डायरेक्टरी में एक्सट्रैक्शन (-d)
एक्सट्रैक्शन प्रक्रिया को टेस्ट करने के लिए वर्कस्पेस डायरेक्टरी ~/zip_demo में मौजूद रहते हुए कमांड्स निष्पादित करते हैं:

फाइलों को बिना अनपैक किए आर्काइव के भीतर की फाइल सूची, उनका अनकंप्रेस्ड साइज और टाइमस्टैम्प देखने के लिए unzip -l का उपयोग किया जाता है:

वर्तमान डायरेक्टरी में फाइलों का बिखराव रोकने के लिए एक डेस्टिनेशन फोल्डर ~/zip_demo/extracted बना लेते हैं:

-d फ्लैग आर्काइव को किसी खास डायरेक्टरी में सुरक्षित रूप से एक्सट्रैक्ट करने की सुविधा देता है, जिससे मूल डायरेक्टरी स्वच्छ बनी रहती है:

टारगेट डायरेक्टरी में फोल्डर हायरार्की और फाइलों की सही बहाली सुनिश्चित करने के लिए रिकर्सिव लिस्टिंग कमांड रन करें:

अनचाही फाइलों को छोड़ना (-x) और पासवर्ड एन्क्रिप्शन का इस्तेमाल
एडवांस्ड फिल्टरींग और सिक्योरिटी तकनीकों का अभ्यास करने के लिए बेस पाथ ~/zip_demo पर वापस आते हैं:

आर्काइव में अस्थायी फाइलों या भारी लॉग्स को शामिल होने से रोकने के लिए -x (exclude) पैटर्न काम आता है। निम्नलिखित कमांड से *.log फाइलों को छोड़कर बाकी प्रोजेक्ट को कंप्रेस किया गया है:

फिल्टर सही ढंग से लागू हुआ या नहीं, यह परखने के लिए आर्काइव लिस्टिंग चलाकर पुष्टि करते हैं कि app.log बाहर रह गया है:

संवेदनशील कोडबेस या कॉन्फिग फाइलों को सुरक्षित रखने के लिए -P विकल्प के साथ सीधे पासवर्ड सेट करके एनक्रिप्टेड ज़िप तैयार की जा सकती है:

विभिन्न आवश्यकताओं के अनुसार बनाए गए सभी ज़िप आर्काइव्स (project_*.zip) की सूची और उनका अंतिम साइज देखते हैं:

इस प्रकार हमने उबंटू लिनक्स में zip और unzip टूल्स के जरिए फाइलों को आर्काइव करने, डायरेक्टरी को रिकर्सिव कंप्रेस करने, चुनिंदा एक्सक्लूजन और पासवर्ड सिक्योरिटी जैसी अहम तकनीकों को समझा। टर्मिनल आधारित इन कमांड्स और ऑप्शन्स की मदद से आप अपने सिस्टम एडमिनिस्ट्रेशन और डिप्लॉयमेंट वर्कफ़्लो को अधिक तेज और सुव्यवस्थित बना सकते हैं।