Zlib में उपयोग किया जाने वाला कम्प्रेशन एल्गोरिथ्म अनिवार्य रूप से gzip और zip जैसा ही है । गज़िप और ज़िप क्या हैं ? वे कैसे अलग हैं और वे एक ही कैसे हैं?
Zlib में उपयोग किया जाने वाला कम्प्रेशन एल्गोरिथ्म अनिवार्य रूप से gzip और zip जैसा ही है । गज़िप और ज़िप क्या हैं ? वे कैसे अलग हैं और वे एक ही कैसे हैं?
जवाबों:
संक्षिप्त रूप:
.zip
एक संग्रह प्रारूप का उपयोग कर, आमतौर पर, संपीड़न संपीड़न विधि है । .gz
Gzip प्रारूप भी Deflate संपीड़न विधि का उपयोग कर, एकल फ़ाइलों के लिए है। अक्सर gzip के साथ संयोजन में प्रयोग किया जाता है एक संकुचित संग्रह प्रारूप बनाने के लिए टार , .tar.gz
। Zlib पुस्तकालय ज़िप, gzip, द्वारा उपयोग के लिए Deflate संपीड़न और विसंपीड़न कोड प्रदान करता है png (जो का उपयोग करता है zlib आवरण Deflate डेटा पर), और कई अन्य अनुप्रयोगों।
लंबा फार्म:
ज़िप प्रारूप एक खुला विनिर्देश, जहां उनके कार्यान्वयन, PKZIP, शेयरवेयर था के साथ एक खुली प्रारूप के रूप में फिल Katz द्वारा विकसित किया गया था। यह एक संग्रह प्रारूप है जो फाइलों और उनकी निर्देशिका संरचना को संग्रहीत करता है, जहां प्रत्येक फ़ाइल व्यक्तिगत रूप से संपीड़ित होती है। फ़ाइल प्रकार है .zip
। फ़ाइलें, साथ ही निर्देशिका संरचना, वैकल्पिक रूप से एन्क्रिप्ट किया जा सकता है।
ज़िप प्रारूप कई संपीड़न विधियों का समर्थन करता है:
0 - The file is stored (no compression)
1 - The file is Shrunk
2 - The file is Reduced with compression factor 1
3 - The file is Reduced with compression factor 2
4 - The file is Reduced with compression factor 3
5 - The file is Reduced with compression factor 4
6 - The file is Imploded
7 - Reserved for Tokenizing compression algorithm
8 - The file is Deflated
9 - Enhanced Deflating using Deflate64(tm)
10 - PKWARE Data Compression Library Imploding (old IBM TERSE)
11 - Reserved by PKWARE
12 - File is compressed using BZIP2 algorithm
13 - Reserved by PKWARE
14 - LZMA (EFS)
15 - Reserved by PKWARE
16 - Reserved by PKWARE
17 - Reserved by PKWARE
18 - File is compressed using IBM TERSE (new)
19 - IBM LZ77 z Architecture (PFS)
97 - WavPack compressed data
98 - PPMd version I, Rev 1
तरीके 1 से 7 ऐतिहासिक हैं और उपयोग में नहीं हैं। ९ through के माध्यम से ९ relatively तरीके अपेक्षाकृत हाल ही के जोड़ हैं, और अलग-अलग, छोटी मात्रा में उपयोग होते हैं। ज़िप प्रारूप में वास्तव में व्यापक उपयोग की एकमात्र विधि विधि 8, डीफ़्लैट और कुछ हद तक विधि 0 है, जो बिल्कुल भी संपीड़न नहीं है। वस्तुतः हर .zip
फाइल जो आप जंगल में भरेंगे, विशेष रूप से 8 और 0 के तरीकों का उपयोग करेंगे, संभवतः सिर्फ विधि 8। (विधि 8 में प्रभावी रूप से बिना संपीड़न और अपेक्षाकृत कम विस्तार के साथ डेटा को संग्रहीत करने का एक साधन है, और विधि 0 को स्ट्रीम नहीं किया जा सकता है। जबकि विधि 8 हो सकती है।)
आईएसओ / आईईसी 21,320-1: फ़ाइल कंटेनर के लिए 2015 मानक एक प्रतिबंधित ज़िप प्रारूप, जैसे कि जावा में इस्तेमाल संग्रह फ़ाइलों (.jar) के रूप में है, कार्यालय ओपन एक्सएमएल फाइल (माइक्रोसॉफ्ट ऑफिस .docx, .xlsx, .pptx), कार्यालय दस्तावेज़ प्रारूप फाइलें (.odt, .ods, .odp), और EPUB फाइलें (.epub)। यह मानक संपीड़न विधियों को 0 और 8 तक सीमित करता है, साथ ही साथ अन्य बाधाओं जैसे कोई एन्क्रिप्शन या हस्ताक्षर नहीं करता है।
1990 के आस -पास , इन्फो-ज़िप समूह ने डेफलेट प्रारूप के साथ संपीड़न, और उस के विघटन और पहले के स्वरूपों का समर्थन करते हुए पोर्टेबल, फ्री, ओपन सोर्स कार्यान्वयन zip
और unzip
उपयोगिताओं को लिखा । इसने .zip
प्रारूप के उपयोग का बहुत विस्तार किया ।
90 के दशक की शुरुआत में, इंजी-जिप यूटिलिटीज में डीफ्लैट कोड से व्युत्पन्न यूनिक्स compress
उपयोगिता के प्रतिस्थापन के रूप में गज़िप प्रारूप को विकसित किया गया था । यूनिक्स compress
को एक एकल फ़ाइल या स्ट्रीम को संपीड़ित करने के लिए डिज़ाइन किया गया था, एक .Z
फ़ाइल नाम के साथ जोड़कर । एलजेडडब्ल्यू संपीड़न एल्गोरिथ्मcompress
का उपयोग करता है , जो उस समय पेटेंट के तहत था और इसका मुफ्त उपयोग पेटेंट धारकों द्वारा विवाद में था। हालांकि डीफ्लैट के कुछ विशिष्ट कार्यान्वयन फिल काट्ज द्वारा पेटेंट किए गए थे, लेकिन प्रारूप नहीं था, और इसलिए डिफलेट कार्यान्वयन को लिखना संभव था जो किसी भी पेटेंट पर उल्लंघन नहीं करता था। उस कार्यान्वयन को पिछले 20+ वर्षों में इतनी चुनौती नहीं दी गई है। यूनिक्स gzip
उपयोगिता के लिए एक ड्रॉप-इन प्रतिस्थापन के रूप में इरादा थाcompress
, और वास्तव में compress
डिकम्प्रेस-प्रभावित डेटा (यह मानते हुए कि आप उस वाक्य को पार्स करने में सक्षम थे) में सक्षम है। फ़ाइल नाम के लिए gzip
एक appends .gz
। gzip
Deflate कंप्रेस्ड डेटा फॉर्मेट का उपयोग करता है, जो यूनिक्स की तुलना में काफी बेहतर तरीके से संपीड़ित होता है compress
, इसमें बहुत तेजी से विघटन होता है, और डेटा के लिए एक अखंडता जांच के रूप में CRC-32 जोड़ता है। शीर्ष लेख प्रारूप compress
अनुमति दी गई प्रारूप की तुलना में अधिक जानकारी के भंडारण की अनुमति देता है, जैसे कि मूल फ़ाइल नाम और फ़ाइल संशोधन समय।
हालाँकि compress
केवल एक ही फ़ाइल को संपीड़ित करता है, एक फाइल tar
में फ़ाइलों, उनके गुणों और उनकी निर्देशिका संरचना का संग्रह बनाने के लिए उपयोगिता का उपयोग करना आम था .tar
, और फिर compress
एक .tar.Z
फ़ाइल बनाने के लिए इसे संपीड़ित करना । वास्तव में tar
उपयोगिता थी और अभी भी एक ही समय में संपीड़न करने का एक विकल्प है, इसके बजाय आउटपुट को पाइप करने के tar
लिए compress
। इस सभी ने gzip प्रारूप को आगे बढ़ाया, और प्रारूप में tar
सीधे संपीड़ित करने का एक विकल्प है .tar.gz
। tar.gz
प्रारूप की तुलना में बेहतर संपीड़ित करता है .zip
दृष्टिकोण, एक के संपीड़न के बाद से .tar
विशेष रूप से कई छोटे फ़ाइलों फ़ाइलों में अतिरेक का लाभ ले सकते,। .tar.gz
इसकी उच्च पोर्टेबिलिटी के कारण यूनिक्स पर उपयोग में सबसे आम संग्रह प्रारूप है, लेकिन साथ ही उपयोग में अधिक प्रभावी संपीड़न विधियां हैं, इसलिए आप अक्सर देखेंगे .tar.bz2
और .tar.xz
अभिलेखागार।
इसके विपरीत .tar
, .zip
अंत में एक केंद्रीय निर्देशिका है, जो सामग्री की एक सूची प्रदान करती है। वह और अलग संपीड़न एक .zip
फ़ाइल में व्यक्तिगत प्रविष्टियों के लिए यादृच्छिक पहुँच प्रदान करता है । एक .tar
निर्देशिका बनाने के लिए एक फ़ाइल को शुरू से अंत तक विघटित और स्कैन करना होगा, जो कि एक .tar
फ़ाइल को सूचीबद्ध कैसे किया जाता है।
1990 के मध्य के आसपास, गज़िप की शुरुआत के तुरंत बाद, एक ही पेटेंट विवाद को .gif
छवि प्रारूप के मुफ्त उपयोग पर सवाल कहा जाता था , बहुत व्यापक रूप से बुलेटिन बोर्ड और वर्ल्ड वाइड वेब (उस समय एक नई चीज) पर उपयोग किया जाता है। इसलिए एक छोटे समूह ने फ़ाइल प्रकार के साथ .png
, बदलने के लिए PNG दोषरहित संपीड़ित छवि प्रारूप बनाया .gif
। वह प्रारूप संपीड़न के लिए डीफ़्लैट प्रारूप का भी उपयोग करता है, जो छवि डेटा पर फ़िल्टर के बाद लागू किया जाता है, अतिरेक का अधिक उजागर करता है। पीएनजी प्रारूप के व्यापक उपयोग को बढ़ावा देने के लिए, दो मुफ्त कोड पुस्तकालय बनाए गए थे। libpng और zlib। libpng ने PNG प्रारूप की सभी विशेषताओं को संभाला, और zlib ने libpng और साथ ही अन्य अनुप्रयोगों के लिए उपयोग के लिए संपीड़न और विघटन कोड प्रदान किया। zlib को gzip
कोड से रूपांतरित किया गया था ।
सभी उल्लेखित पेटेंट समाप्त हो चुके हैं।
ज़्लिब लाइब्रेरी डिफ्लेट कम्प्रेशन और डीकम्प्रेसन का समर्थन करती है, और डिफ्लेट धाराओं के आसपास तीन तरह की रैपिंग होती है। वे हैं: कोई रैपिंग नहीं ("रॉ" डिफ्लेट), ज़लीब रैपिंग , जिसका उपयोग पीएनजी प्रारूप डेटा ब्लॉक में किया जाता है, और गज़िप रैपिंग, प्रोग्रामर के लिए गज़िप रूटीन प्रदान करने के लिए। Zlib और gzip रैपिंग के बीच मुख्य अंतर यह है कि zlib रैपिंग अधिक कॉम्पैक्ट, छह बाइट्स बनाम gzip के लिए न्यूनतम 18 बाइट्स है, और अखंडता जांच, Adler-32, CRC-32 की तुलना में अधिक तेज़ चलती है जो gzip उपयोग करता है। कच्चे डिफलेट का उपयोग उन कार्यक्रमों द्वारा किया जाता है .zip
जो प्रारूप को पढ़ते और लिखते हैं , जो कि एक और प्रारूप है जो कि संकुचित डेटा के चारों ओर लपेटता है।
zlib अब डेटा ट्रांसमिशन और स्टोरेज के लिए व्यापक उपयोग में है। उदाहरण के लिए, सर्वर और ब्राउज़रों द्वारा अधिकांश HTTP लेनदेन zlib का उपयोग करके डेटा को संपीड़ित और विघटित करते हैं, विशेष रूप से HTTP हेडर का Content-Encoding: deflate
अर्थ है zlib डेटा प्रारूप के अंदर लिपटे संपीड़न विधि ।
अपस्फीति के विभिन्न कार्यान्वयन एक ही इनपुट डेटा के लिए अलग-अलग संपीड़ित आउटपुट में परिणाम कर सकते हैं, जैसा कि चयन योग्य संपीड़न स्तरों के अस्तित्व से प्रकट होता है जो सीपीयू समय के लिए संपीड़न प्रभावशीलता को बंद करने की अनुमति देते हैं। zlib और PKZIP केवल अपस्फीति संपीड़न और विघटन के कार्यान्वयन नहीं हैं। दोनों 7-ज़िप संग्रह उपयोगिता और Google की ज़ोफ़ली लाइब्रेरी में ज़ालिब की तुलना में बहुत अधिक सीपीयू समय का उपयोग करने की क्षमता है, ताकि डिफ्लेक्ट प्रारूप का उपयोग करते समय पिछले कुछ बिट्स को निचोड़ने के लिए संभव हो सके, zlib के उच्चतम की तुलना में संकुचित आकार को कुछ प्रतिशत तक कम कर सके। संपीड़न स्तर। pigz उपयोगिता, gzip के समानांतर कार्यान्वयन में, zlib (संपीड़न स्तर 1-9) या zopfli (संपीड़न स्तर 11) का उपयोग करने का विकल्प शामिल है, और कई प्रोसेसर और कोर के लिए बड़ी फ़ाइलों के संपीड़न को विभाजित करके zopfli का उपयोग करने के समय के प्रभाव को कम करता है।
.tar.gz
फ़ाइलों को देखते हैं , तो वही होता है।) सबसे पहले, टार + गज़िप, ज़िप से बेहतर संपीड़ित करता है, क्योंकि अगली फ़ाइल का संपीड़न पिछली फ़ाइल से इतिहास का उपयोग कर सकता है (कभी-कभी इसे "ठोस" संग्रह के रूप में संदर्भित किया जाता है)। ज़िप केवल फाइलों को व्यक्तिगत रूप से संपीड़ित कर सकता है। दूसरा, टार यूनिक्स निर्देशिका जानकारी के सभी को संरक्षित करता है, जबकि ज़िप ऐसा करने के लिए डिज़ाइन नहीं किया गया था। (बाद में यूनिक्स-विशिष्ट अतिरिक्त ब्लॉकों के साथ ज़िप प्रारूप में एक्सटेंशन इस समस्या को दूर करने की कोशिश करता है।)
ज़िप एक फ़ाइल स्वरूप है जिसका उपयोग फ़ाइलों की एक अनियंत्रित संख्या और फ़ोल्डरों को दोषरहित संपीड़न के साथ करने के लिए किया जाता है। यह उपयोग की जाने वाली संपीड़न विधियों के बारे में कोई सख्त धारणा नहीं बनाता है, लेकिन DEFLATE के साथ सबसे अधिक बार उपयोग किया जाता है ।
Gzip DEFLATE पर आधारित एक सम्पीडन एल्गोरिथ्म है, लेकिन संभावित पेटेंट एट अल, और एक संपीड़ित फ़ाइल को संग्रहीत करने के लिए एक फ़ाइल प्रारूप के साथ कम संलग्न है। यह टार के साथ संयुक्त होने पर फ़ाइलों और फ़ोल्डरों की एक मनमानी संख्या को संपीड़ित करने का समर्थन करता है । परिणामी फ़ाइल का विस्तार है .tgz
या .tar.gz
इसे आमतौर पर टारबॉल कहा जाता है ।
zlib अपने सबसे आम LZ77 अवतार में DEFLATE को भरने वाले कार्यों की एक लाइब्रेरी है ।
सबसे महत्वपूर्ण अंतर यह है कि जिप्पी केवल एक ही फाइल को कंप्रेस करने में सक्षम है, जबकि जिप एक-एक करके कई फाइलों को कंप्रेस करती है और बाद में उन्हें एक सिंगल फाइल में संग्रहीत करती है। इस प्रकार, गज़िप अधिकांश समय टार के साथ आता है (हालांकि अन्य संभावनाएं हैं, हालांकि)। यह कुछ (डिस) लाभों के साथ आता है।
यदि आपके पास एक बड़ा संग्रह है और आपको केवल एक ही फ़ाइल की आवश्यकता है, तो आपको उस फ़ाइल को प्राप्त करने के लिए पूरी gzip फ़ाइल को विघटित करना होगा। यदि आपके पास ज़िप फ़ाइल है, तो इसकी आवश्यकता नहीं है।
दूसरी ओर, यदि आप 10 सीमांकित या समान फ़ाइलों को संपीड़ित करते हैं, तो ज़िप संग्रह बहुत बड़ा हो जाएगा क्योंकि प्रत्येक फ़ाइल व्यक्तिगत रूप से संकुचित होती है, जबकि टार के साथ संयोजन में गज़िप में एक एकल फ़ाइल संपीड़ित होती है जो कि फ़ाइलें अधिक प्रभावी होती हैं समान (बराबर)।