ज़िप फ़ाइल क्या है?
.zip एक्सटेंशन वाली फ़ाइल एक संग्रह है जिसमें एक या अधिक फ़ाइलें या निर्देशिकाएं हो सकती हैं। ज़िप फ़ाइल आकार को कम करने के लिए संग्रह में शामिल फ़ाइलों पर संपीड़न लागू हो सकता है। फ़ाइलों और फ़ोल्डरों के संग्रह को प्राप्त करने के लिए फिल काट्ज़ द्वारा फरवरी 1989 में ज़िप फ़ाइल प्रारूप को सार्वजनिक किया गया था। प्रारूप को PKZIP उपयोगिता का हिस्सा बनाया गया था, जिसे PKWARE, Inc. द्वारा बनाया गया था। उपलब्ध विनिर्देशों, कई कंपनियों ने माइक्रोसॉफ्ट (विंडोज 7 के बाद से), ऐप्पल (मैक ओएस एक्स) और कई अन्य सहित ज़िप फ़ाइल प्रारूप को अपनी सॉफ्टवेयर उपयोगिताओं का हिस्सा बनाया है।
ज़िप फ़ाइल स्वरूप का संक्षिप्त इतिहास
ज़िप फ़ाइल प्रारूप का इतिहास सिस्टम एन्हांसमेंट एसोसिएट्स (एसईए) द्वारा पीकेवेयर के खिलाफ अपने ट्रेडमार्क और उत्पाद की उपस्थिति और उपयोगकर्ता इंटरफ़ेस के कॉपीराइट के लिए अनुमति के बिना अपनी एआरसी उपयोगिता का उपयोग करने के लिए मुकदमा दायर करने की घटना की तारीख है। इससे पहले, फिल काट्ज़ ने एसईए के स्रोत कोड को फिर से लिखा था और पीकेएक्सएआरसी, एक एआरसी एक्सट्रैक्टर, और पीकेएआरसी, एक फाइल कंप्रेसर, को एमएस-डॉस आधारित सिस्टम के लिए फ्रीवेयर के रूप में जारी किया था। मुकदमे में हारने के बाद, PKWARE अब ARC से संबंधित किसी भी चीज़ का उपयोग नहीं कर सका। यह वह जगह है जहां एक नई फ़ाइल संपीड़न का निर्माण हुआ, जिसे ज़िप नाम दिया गया था, जिसे PKWARE, Inc में PKZIP उपयोगिता का हिस्सा बनाया गया था।
काट्ज़ ने ज़िप फ़ाइल प्रारूप विनिर्देशों को सार्वजनिक डोमेन में जारी किया, जबकि उनकी संपीड़न और निष्कर्षण उपयोगिता यानी पीकेजेआईपी पर मालिकाना अधिकार बरकरार रखा। ज़िप संपीड़न प्रणाली 32-बिट चक्रीय अतिरेक जाँच (CRC) एल्गोरिथम के माध्यम से फ़ाइल को संपीड़ित करने के लिए एक फ़ोल्डर में फ़ाइलों को संग्रहीत करने में सक्षम थी (और है) आकार। ARC के विपरीत, .ZIP फ़ोल्डर में एक निर्देशिका फ़ाइल शामिल होती है जो एक क्रिप्टोग्राफर की कोड बुक की भूमिका निभाती है, जिसमें संपीड़ित फ़ाइलों को प्रस्तुत करने के लिए आवश्यक जानकारी होती है।
ज़िप में समर्थित संपीड़न विधियाँ
.ZIP फ़ाइल स्वरूप विनिर्देशों के अनुसार, निम्नलिखित संपीड़न विधियाँ समर्थित हैं।
- स्टोर - का अर्थ है कोई संपीड़न नहीं
- सिकुड़ना
- कमी (इसका तात्पर्य स्तर 1 से स्तर 4 तक के संपीड़न कारक हैं)
- इम्प्लोड
- हवा निकालना
- डिफ्लैट64 *बीजेआईपी2
- एलजेडएमए (ईएफएस)
- वावपैक
- पीपीएमडी संस्करण I, रेव 1
DEFLATE आमतौर पर इस्तेमाल की जाने वाली संपीड़न विधि है जो एक दोषरहित दिनांक संपीड़न एल्गोरिथ्म है जो LZ77 और हफ़मैन कोडिंग के संयोजन का उपयोग करता है और RFC 1951 में विस्तृत है।
ज़िप फ़ाइल प्रारूप निर्दिष्टीकरण
ज़िप फ़ाइलों में विभिन्न संपीड़न तकनीकों का उपयोग करके कई फ़ाइलों को संग्रहीत करने की क्षमता होती है, जबकि एक ही समय में बिना किसी संपीड़न के फ़ाइल को संग्रहीत करने का समर्थन करता है। प्रत्येक फ़ाइल को व्यक्तिगत रूप से संग्रहीत/संपीड़ित किया जाता है जो पूरे संग्रह में संपीड़न या डीकंप्रेसन लागू किए बिना उन्हें निकालने, या नए जोड़ने में मदद करता है।
समग्र ज़िप फ़ाइल स्वरूप
प्रत्येक ज़िप फ़ाइल को निम्न तरीके से संरचित किया जाता है:
ज़िप फ़ाइल स्वरूप |
---|
स्थानीय फ़ाइल हैडर 1 |
फ़ाइल डेटा 1 |
डेटा डिस्क्रिप्टर 1 |
स्थानीय फ़ाइल हैडर 2 |
फाइल डेटा 2 |
डेटा डिस्क्रिप्टर 2 |
…. |
…. |
स्थानीय फ़ाइल हैडर संख्या |
फाइल डाटा नंबर |
डेटा डिस्क्रिप्टर नंबर |
पुरालेख डिक्रिप्शन हैडर |
पुरालेख अतिरिक्त डेटा रिकॉर्ड |
केंद्रीय निर्देशिका |
ज़िप फ़ाइल प्रारूप संग्रह के उद्देश्य के लिए 32-बिट सीआरसी एल्गोरिदम का उपयोग करता है। संपीड़ित फ़ाइलों को प्रस्तुत करने के लिए, एक ज़िप संग्रह के अंत में एक निर्देशिका होती है जो संग्रह फ़ाइल में निहित फ़ाइलों और उनके स्थान की प्रविष्टि रखती है। इस प्रकार, यह संपीड़ित फ़ाइलों को प्रस्तुत करने के लिए आवश्यक जानकारी को एनकैप्सुलेट करने के लिए एन्कोडिंग की भूमिका निभाता है। ज़िप पाठक संपूर्ण ज़िप संग्रह को पढ़े बिना फ़ाइलों की सूची लोड करने के लिए निर्देशिका का उपयोग करते हैं। प्रारूप डेटा के नुकसान के खिलाफ अधिक सुरक्षा प्रदान करने के लिए निर्देशिका संरचना की दोहरी प्रतियां रखता है।
ज़िप संग्रह में प्रत्येक फ़ाइल को एक व्यक्तिगत प्रविष्टि के रूप में दर्शाया जाता है जहाँ प्रत्येक प्रविष्टि में एक स्थानीय फ़ाइल हैडर होता है जिसके बाद संपीड़ित फ़ाइल डेटा होता है। संग्रह के अंत में निर्देशिका इन सभी फ़ाइल प्रविष्टियों के संदर्भ रखती है। ज़िप फ़ाइल पाठकों को स्थानीय फ़ाइल शीर्षलेखों को पढ़ने से बचना चाहिए और सभी प्रकार की फ़ाइल सूची को निर्देशिका से पढ़ा जाना चाहिए। संग्रह में मान्य फ़ाइल प्रविष्टियों के लिए यह निर्देशिका एकमात्र स्रोत है क्योंकि फ़ाइलों को संग्रह के अंत में भी जोड़ा जा सकता है। यही कारण है कि यदि कोई पाठक किसी ज़िप संग्रह के स्थानीय शीर्षकों को शुरू से पढ़ता है, तो वह अमान्य (हटाई गई) प्रविष्टियों को भी पढ़ सकता है, साथ ही वे संग्रह से हटाए जा रहे निर्देशिका का हिस्सा नहीं हैं।
केंद्रीय निर्देशिका में फ़ाइल प्रविष्टियों के क्रम को संग्रह में फ़ाइल प्रविष्टियों के क्रम से मेल खाने की आवश्यकता नहीं है।
ज़िप फ़ाइल प्रविष्टियाँ
ज़िप फ़ाइल में प्रविष्टियाँ एक के बाद एक व्यवस्थित की जाती हैं जहाँ प्रत्येक प्रविष्टि में निम्न शामिल होते हैं:
- स्थानीय फ़ाइल हैडर
- वैकल्पिक अतिरिक्त डेटा फ़ील्ड
- उपयोगकर्ता डेटा (वैकल्पिक रूप से संपीड़ित / वैकल्पिक रूप से एन्क्रिप्टेड)
प्रत्येक प्रविष्टि का स्थानीय फ़ाइल शीर्षलेख फ़ाइल के बारे में जानकारी जैसे टिप्पणी, फ़ाइल आकार और फ़ाइल नाम का प्रतिनिधित्व करता है। अतिरिक्त डेटा फ़ील्ड (वैकल्पिक) ज़िप प्रारूप के एक्स्टेंसिबिलिटी विकल्पों के लिए जानकारी को समायोजित कर सकते हैं।
स्थानीय फ़ाइल हैडर
स्थानीय फ़ाइल शीर्षलेख में विशिष्ट फ़ील्ड संरचना होती है जिसमें बहु-बाइट मान होते हैं। सभी मान छोटे-एंडियन बाइट क्रम में संग्रहीत होते हैं जहां फ़ील्ड की लंबाई बाइट्स में लंबाई की गणना करती है। ज़िप फ़ाइल में सभी संरचनाएं प्रत्येक फ़ाइल प्रविष्टि के लिए 4-बाइट हस्ताक्षर का उपयोग करती हैं। केंद्रीय निर्देशिका हस्ताक्षर का अंत 0x06054b50 है और इसे अपने अद्वितीय हस्ताक्षर का उपयोग करके पहचाना जा सकता है। स्थानीय फ़ाइल शीर्षलेख में संग्रहीत जानकारी का क्रम निम्नलिखित है।
ऑफ़सेट | बाइट्स | विवरण |
---|---|---|
0 | 4 | स्थानीय फ़ाइल हेडर सिग्नेचर # 0x04034b50 (छोटी-एंडियन संख्या के रूप में पढ़ें) |
4 | 2 | निकालने के लिए आवश्यक संस्करण (न्यूनतम) |
6 | 2 | सामान्य प्रयोजन बिट फ्लैग |
8 | 2 | संपीड़न विधि |
10 | 2 | फ़ाइल अंतिम संशोधन समय |
12 | 2 | फ़ाइल अंतिम संशोधन तिथि |
14 | 4 | सीआरसी-32 |
18 | 4 | संपीड़ित आकार |
22 | 4 | असम्पीडित आकार |
26 | 2 | फ़ाइल नाम की लंबाई (एन) |
28 | 2 | अतिरिक्त क्षेत्र लंबाई (एम) |
30 | n | फ़ाइल का नाम |
30+n | m | अतिरिक्त क्षेत्र |
केंद्रीय निर्देशिका फ़ाइल हैडर
ऑफ़सेट | बाइट्स | विवरण |
---|---|---|
0 | 4 | केंद्रीय निर्देशिका फ़ाइल हेडर हस्ताक्षर # 0x02014b50 |
4 | 2 | द्वारा बनाया गया संस्करण |
6 | 2 | निकालने के लिए आवश्यक संस्करण (न्यूनतम) |
8 | 2 | सामान्य प्रयोजन बिट फ्लैग |
10 | 2 | संपीड़न विधि |
12 | 2 | फ़ाइल अंतिम संशोधन समय |
14 | 2 | फ़ाइल अंतिम संशोधन तिथि |
16 | 4 | सीआरसी-32 |
20 | 4 | संपीड़ित आकार |
24 | 4 | असंपीड़ित आकार |
28 | 2 | फ़ाइल नाम की लंबाई (एन) |
30 | 2 | अतिरिक्त क्षेत्र लंबाई (एम) |
32 | 2 | फ़ाइल टिप्पणी की लंबाई (के) |
34 | 2 | डिस्क नंबर जहां से फाइल शुरू होती है |
36 | 2 | आंतरिक फ़ाइल विशेषताएँ |
38 | 4 | बाहरी फ़ाइल विशेषताएँ |
42 | 4 | स्थानीय फ़ाइल हेडर के सापेक्ष ऑफसेट। यह पहली डिस्क की शुरुआत के बीच बाइट्स की संख्या है जिस पर फ़ाइल होती है, और स्थानीय फ़ाइल शीर्षलेख की शुरुआत होती है। यह सॉफ़्टवेयर को ज़िप फ़ाइल के अंदर फ़ाइल की स्थिति का पता लगाने के लिए केंद्रीय निर्देशिका को पढ़ने की अनुमति देता है। |
46 | n | फ़ाइल का नाम |
46+n | m | अतिरिक्त क्षेत्र |
46+n+m | k | फाइल टिप्पणी |
केंद्रीय निर्देशिका रिकॉर्ड का अंत
ऑफ़सेट | बाइट्स | विवरण |
---|---|---|
0 | 4 | केंद्रीय निर्देशिका हस्ताक्षर का अंत # 0x06054b50 |
4 | 2 | इस डिस्क की संख्या |
6 | 2 | डिस्क जहां केंद्रीय निर्देशिका शुरू होती है |
8 | 2 | इस डिस्क पर केंद्रीय निर्देशिका रिकॉर्ड की संख्या |
10 | 2 | केंद्रीय निर्देशिका रिकॉर्ड की कुल संख्या |
12 | 4 | केंद्रीय निर्देशिका का आकार (बाइट्स) |
16 | 4 | संग्रह की शुरुआत के सापेक्ष केंद्रीय निर्देशिका की शुरुआत की ऑफसेट |
20 | 2 | टिप्पणी की लंबाई (एन) |
22 | n | टिप्पणी |