Ubuntu में zip कमांड: फाइल कंप्रेशन और एक्सट्रैक्शन गाइड

परिचय एवं अवलोकन

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

zip व unzip टूल का इंस्टॉलेशन और बुनियादी फाइल कंप्रेशन

सिस्टम पर आर्काइविंग वर्कफ़्लो शुरू करने के लिए हमें सबसे पहले एपीटी रिपॉजिटरी अपडेट करके zip और unzip बाइनरी इंस्टॉल करनी होगी:

apt-get update -qq && apt-get install -y zip unzip

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

mkdir -p ~/zip_demo && cd ~/zip_demo

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

echo “Sample text file 1” > file1.txt

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

echo “Sample text file 2” > file2.txt

zip कमांड अलग-अलग फाइलों और फोल्डरों को कंप्रेस करके एक पोर्टेबल .zip आर्काइव तैयार करता है। नीचे दी गई कमांड के जरिए file1.txt और file2.txt को मिलाकर archive.zip जनरेट किया गया है।
⚙️ [अक्सर इस्तेमाल होने वाले प्रमुख फ्लैग्स]

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

zip archive.zip file1.txt file2.txt

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

ls -lh archive.zip

डायरेक्टरी रिकर्सिव कंप्रेशन (-r) और उच्चतम कंप्रेशन स्तर (-9)

डायरेक्टरी स्ट्रक्चर टेस्ट करने के लिए पुनः अपने बेस फोल्डर ~/zip_demo में आ जाते हैं:

cd ~/zip_demo

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

mkdir -p project/src project/logs

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

echo “console.log(‘App running’);” > project/src/app.js

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

echo “System initialized” > project/logs/app.log

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

zip -r project.zip project

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

zip -9 -r project_max.zip project

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

ls -lh project*.zip

आर्काइव कंटेंट की प्रीव्यू सूची (-l) और तय डायरेक्टरी में एक्सट्रैक्शन (-d)

एक्सट्रैक्शन प्रक्रिया को टेस्ट करने के लिए वर्कस्पेस डायरेक्टरी ~/zip_demo में मौजूद रहते हुए कमांड्स निष्पादित करते हैं:

cd ~/zip_demo

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

unzip -l project.zip

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

mkdir -p ~/zip_demo/extracted

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

unzip project.zip -d ~/zip_demo/extracted

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

ls -R ~/zip_demo/extracted

अनचाही फाइलों को छोड़ना (-x) और पासवर्ड एन्क्रिप्शन का इस्तेमाल

एडवांस्ड फिल्टरींग और सिक्योरिटी तकनीकों का अभ्यास करने के लिए बेस पाथ ~/zip_demo पर वापस आते हैं:

cd ~/zip_demo

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

zip -r project_no_logs.zip project -x “*.log”

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

unzip -l project_no_logs.zip

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

zip -P SecurePass123! -r project_encrypted.zip project/src

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

ls -lh project_*.zip

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