जवाबों:
टार
ज़िप
तथ्य यह है कि ज़िप अलग-अलग फ़ाइलों को संपीड़ित करता है, संपीड़न अनुपात को प्रभावित करेगा, विशेष रूप से कई छोटी समान फ़ाइलों पर।
(कम से कम यह एक दशक पहले बिल्कुल सही था।)
तार जिप की तुलना में बहुत अधिक मेटाडेटा को संरक्षित करता है, मेरी तुलना देखें (यह थोड़ा पुराना है):
(ज़ूम करने के लिए क्लिक करें)
टैर 65% टेस्ट पास करता है, जहाँ ज़िप केवल 17% पास करता है। मैंने टेस्ट सूट को बीएसडी लाइसेंस के तहत जीथब पर उपलब्ध कराया है ताकि आप मैक होने पर खुद के लिए कोशिश कर सकें। लिनक्स के लिए, मुझे यकीन नहीं है कि कोई मेटाडेटा है, तो ये परीक्षण प्रासंगिक नहीं हो सकते हैं।
दक्षता को विभिन्न तरीकों से मापा जा सकता है:
अन्य प्रश्न भी हैं, जैसे "परिणामी अभिलेखागार में हेरफेर करने के लिए उपकरण कितने सामान्य हैं?"
इसलिए, उदाहरण के लिए, की bzip2
तुलना में छोटी फ़ाइलें बनाता है gzip
, लेकिन इसमें काफी समय लग सकता है। इसके अलावा, मेरे अनुभव gzip
में यूनिक्स जैसी प्रणालियों पर सार्वभौमिक है, लेकिन bzip2
अभी भी नहीं है (हालांकि यह बहुत आम है और आमतौर पर प्राप्त करना आसान है)।
जैसा कि कहा गया है, टार ही संपीड़ित नहीं करता है। यदि आप टार सेक को जोड़ते हैं (जैसे कि .tar.gz या .tar.bz2 पाने के लिए), तो आप एक ही बार में पूरी टार फाइल को कंप्रेस कर रहे हैं। इसके विपरीत, ज़िप प्रत्येक फ़ाइल को व्यक्तिगत रूप से संपीड़ित करता है।
दक्षता कार्यभार पर निर्भर करती है। विशेष रूप से, ज़िप आपको व्यक्तिगत फ़ाइलों को सीधे एक्सेस करने की अनुमति देता है। टार के साथ, आपको पहले अवांछित (संपीड़ित) फ़ाइलों के माध्यम से तलाश करना होगा। संपीड़न प्रदर्शन इस बात पर निर्भर करता है कि आप क्या कंप्रेस कर रहे हैं। tar
के साथ bzip2
अक्सर समान फ़ाइलों की एक बड़ी संख्या के लिए बेहतर होता है (जैसे एक स्रोत निर्देशिका)। zip
यदि प्रत्येक फ़ाइल में बहुत भिन्न सामग्री हो तो बेहतर हो सकता है।
ज़िप अभिलेखागार में अंत में उनकी सामग्री की एक केंद्रीय निर्देशिका होती है (सबसे पहले निर्देशिका बनाने से बचने की संभावना है, जहां आपको अभी तक नहीं पता है कि अंदर क्या होगा)। यह पूरे संग्रह को अनपैक किए बिना एकल फ़ाइलों को जल्दी से निकालने की अनुमति देता है: बस संग्रह निर्देशिका पढ़ें और केवल वही निकालें जो आवश्यक है। हालाँकि, इसके लिए यह आवश्यक है कि पूरा संग्रह सुगम हो, और यादृच्छिक अभिगम की आवश्यकता है जो केवल ब्लॉक डिवाइस (फ्लॉपी डिस्क, हार्ड ड्राइव) पर उपलब्ध है। इसके अलावा, आर्काइव डायरेक्टरी असुरक्षित है: अगर किसी कारण से आर्काइव छोटा हो जाता है, तो उसे आर्काइव से उपयोगी किसी भी चीज को निकालने के लिए भारी मैड्रिड की आवश्यकता होती है ।
BBS उपयोग के लिए ज़िप अभिलेखागार बनाए गए थे, जहाँ एक निर्देशिका की सामग्री को एक एकल (और संपीड़ित) फ़ाइल में बंडल करने में सक्षम होना महत्वपूर्ण था --- संभवतः हजारों एकल फ़ाइलों को डाउनलोड करने के बजाय। ज्यादातर वेब साइटें आज भी उन्हीं कारणों से अपने डाउनलोड बंडल करती हैं।
टार अभिलेखागार को टेप ड्राइव के लिए उपयोग किए जाने वाले बैकअप बंडल के लिए तैयार किया गया था, इसलिए अनुक्रमिक पहुंच के लिए । कोई केंद्रीय निर्देशिका नहीं है; इसके बजाय, संग्रह में नियमित अंतराल पर हेडर ब्लॉक होते हैं जो इंगित करते हैं कि कौन सी फाइलें अगले कुछ ब्लॉकों में अनुसरण करेंगी। टार अभिलेखागार एक झपट्टा में पढ़ा जा करने का इरादा कर रहे हैं; यदि केवल एक ही फ़ाइल निकाली जानी है, तो संग्रह को क्रमिक रूप से पढ़ा जाता है, शुरू से ही शुरू होता है जब तक कि अनुरोधित फ़ाइल नहीं मिल जाती है (जो कि बहुत अंत में भी हो सकती है)। उसके ऊपर संपीड़न लागू किया जाता है; विभिन्न संपीड़न प्रोग्राम हैं जो टार संग्रहों में लागू किए गए प्रत्येक ( compress
, gzip
,bzip2
आदि) स्ट्रीम कंप्रेशर्स हैं और किसी भी मामले में संग्रह की अनुक्रमिक प्रकृति को नहीं बदलते हैं। सबसे खराब स्थिति में, आपको तब तक थोड़ा और ब्लॉक चाहिए जब तक आप निकालना शुरू नहीं कर सकते।
यह एक तुच्छ अंतर की तरह लग सकता है, लेकिन वास्तव में दर्शन में एक ध्रुवीय विपरीत का प्रतिनिधित्व करता है। ज़िप अभिलेखागार के साथ, इसके साथ उपयोगी कुछ भी करने के लिए हमेशा पूरी फ़ाइल को हाथ में रखने की आवश्यकता होती है, जबकि एक टार आर्काइव को एक पाइप लाइन में प्रवाहित किया जा सकता है। मैं एक बड़े टार आर्काइव को डाउनलोड कर सकता हूं और इसे शुरू से ही सही से निकालना शुरू कर सकता हूं, जैसे ही पहले कुछ ब्लॉक आते हैं (और जैसे ही मुझे वह फ़ाइल मिल जाती है जिसे मैं ढूंढ रहा हूं)। एक ज़िप संग्रह के लिए, मुझे तब तक इंतजार करना होगा जब तक कि संग्रह निर्देशिका प्रकट न हो जाए, जो संग्रह के बहुत अंत में आता है। लेकिन एक बार जब मेरे पास पूरी फ़ाइल होगी, तो इसमें से आंशिक सामग्री निकालने के लिए एक टार फ़ाइल से बहुत तेज होगा।
दोनों प्रारूपों में उनके लिए एक बहुत मजबूत बिंदु है, जो इस बात पर निर्भर करता है कि उनका उपयोग कहां और कैसे किया जाता है। चूंकि पाइपलाइन (और इस प्रकार डेटा को एक प्रक्रिया से दूसरी प्रक्रिया में स्ट्रीमिंग करने की धारणा) केवल यूनिक्स दुनिया में ही मौजूद हैं, टार अभिलेखागार का मुख्य रूप से अन्य सिस्टम पर खो गया है, यही वजह है कि ज़िप अभिलेखागार वहां बहुत अधिक लोकप्रिय हैं। लेकिन टार अभिलेखागार अधिक लचीले हैं, यही कारण है कि जब भी मेरे पास कोई विकल्प होता है तो मैं उन्हें पसंद करता हूं।
जैसा कि दूसरे ने पहले ही कहा था, टार सभी फाइलों का एक बड़ा "ब्लॉक" बनाता है जो कि जीज़िप या बज़िप 2 जैसी स्ट्रीम कॉम्प्रिसेसर के साथ कंप्रेस किया जा सकता है।
इसका नुकसान यह है कि आपको संग्रह के अंदर एक फ़ाइल तक पहुंचने के लिए पूरी फ़ाइल को विघटित करना होगा।
इसका लाभ यह है कि संपीड़ित अनुपात आमतौर पर अधिक होता है, खासकर जब संपीड़ित फाइलें बहुत समान होती हैं।
अन्य पैकर जैसे "रार" का एक ही प्रभाव होने के लिए "ब्लॉक मोड" (या समान) है।