टार के बिना gzip? वे एक साथ क्यों उपयोग किए जाते हैं?


60

टार और गज़िप लगभग हमेशा एक साथ क्यों इस्तेमाल किए जाते हैं, और सिर्फ गज़िप ही नहीं? क्या उस तरीके का कोई फायदा है?

जवाबों:


72

TAR कई फ़ाइलों में से एक एकल संग्रहीत फ़ाइल बनाता है, लेकिन उन्हें संपीड़ित नहीं करता है।

प्रारूप विवरण

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

GZIP एक एकल फ़ाइल को किसी अन्य एकल फ़ाइल में संपीड़ित करता है, लेकिन संग्रह नहीं बनाता है।

फाइल प्रारूप

... हालाँकि इसका फ़ाइल प्रारूप भी कई ऐसी धाराओं को समाप्‍त करने की अनुमति देता है (ज़िप की गई फ़ाइलों को केवल सम्‍मिलित रूप से सम्‍मिलित किया जाता है जैसे कि वे मूल रूप से एक फ़ाइल थीं), gzip का उपयोग आम तौर पर केवल एकल फ़ाइलों को संपीड़ित करने के लिए किया जाता है। [४] संपीड़ित अभिलेखागार आमतौर पर एकल टार संग्रह में फ़ाइलों के संग्रह को इकट्ठा करके बनाया जाता है, और फिर उस संग्रह को gzip के साथ संपीड़ित किया जाता है।


12
"Tgz" फ़ाइल जैसी कोई चीज़ नहीं है। यह एक tar.gz है। गज़िप का काम अपनी सामग्री को ज़िप या अनज़िप करना है (इस मामले में, एक टार आर्काइव।) तब आप इसे टार के साथ अनारक्षित करते हैं। यह विशिष्ट यूनिक्स पाइपलाइनिंग दर्शन है, और इस तरह शायद ही अद्वितीय है।
luis.espinal

5
नहीं, .tar.gz अद्वितीय नहीं है: .tar.bz2, .cpio.gz, आदि उसी तरह काम करते हैं।
user46971

3
@ user36310 मुझे पता है कि आप सिद्धांत रूप में क्या कहते हैं, लेकिन व्यवहार में उपकरण आपको एक फाइल निकालने देते हैं। tar -xzvf tarball.tar.gz single/file.txt। पर्दे के पीछे इसे कुछ अतिरिक्त काम करने की ज़रूरत होती है, लेकिन दिखावे के लिए यह एक एकल फ़ाइल निकालता है।
रिच होमोलका

4
अगर फ़ाइल एक बड़े संग्रह के अंत में है, तो "बहुत सारे अतिरिक्त काम" करें। स्पष्ट रूप से, यदि आपको यादृच्छिक अभिगम की आवश्यकता है, तो zip / rar / xar / 7z / lzh / arj / cab / sit आदि बेहतर प्रारूप हैं।
लाक

3
सटीक होने के लिए, एक .tar.*संपीड़ित संग्रह हमेशा "ठोस" होता है, अर्थात। एक एकल संपीड़ित धारा के होते हैं। .zipदूसरी ओर एक संग्रह बिल्कुल ठोस नहीं है, प्रत्येक फ़ाइल के लिए संपीड़न एल्गोरिथ्म नए सिरे से शुरू किया गया है। यह यादृच्छिक अभिगम को गति देने के लिए संपीड़न दक्षता का त्याग करता है। .7zअभिलेख ठोस, गैर-ठोस या ठोस ब्लॉक हो सकते हैं।
डेनियल बी

17

Gzip / Bzip2 स्ट्रीम कम्प्रेसर हैं। वे डेटा की एक धारा को कुछ छोटे में संकुचित करते हैं। उनका उपयोग व्यक्तिगत फाइलों पर किया जा सकता है, लेकिन फाइलों के समूहों पर नहीं।

दूसरी ओर टार में पथों, अनुमतियों और स्वामित्व की जानकारी के साथ फ़ाइलों की एक सूची को चालू करने की क्षमता है, एक एकल सतत स्ट्रीम में - और इसके विपरीत।

इसीलिए, फ़ाइलों को संग्रहीत करने के लिए (और अगर किसी को संपीड़न की आवश्यकता है), तो एक आमतौर पर टार + कुछ संपीड़न विधि का उपयोग करता है।


12

टार एक और केवल एक ही चीज़ को अच्छी तरह से करने का प्रभारी है: (अन) एक संग्रह फ़ाइल में (बाहर) संग्रह करना। किस? एक और केवल एक चीज की: फाइलों का एक सेट

Gzip एक और केवल एक ही चीज़ को अच्छी तरह से करने का प्रभारी है: (संयुक्त राष्ट्र) संपीड़ित करना। किस? केवल एक चीज और एक चीज: किसी भी प्रकार की एक फ़ाइल ... और जिसमें टार के साथ बनाई गई फ़ाइल भी शामिल है।

यह पाइपलाइनिंग, अंतर्निहित "पाइप और फिल्टर" वास्तुकला के यूनिक्स दर्शन पर वापस जाता है; एक फ़ाइल के रूप में सब कुछ का इलाज और "एक-चीज़-एक-एक-चीज़-केवल-और-यह-अच्छी तरह से" का ध्वनि वास्तुशिल्प लक्ष्य (जिसके परिणामस्वरूप बहुत ही सुरुचिपूर्ण और सरल प्लग-एन-प्ले का प्रकार होता है ।)

इसकी सादगी में, यह प्रकृति में लगभग बीजगणितीय है (सिस्टम डिज़ाइन में एक विषम लक्ष्य)। और यह कोई आसान उपलब्धि नहीं है।

कई मायनों में (और इसकी खामियों के बिना नहीं), यह रचनाशीलता, प्रतिरूपकता, ढीले युग्मन और उच्च सामंजस्य में लगभग एक शिखर है। यदि आप इन चार को समझते हैं (और मेरा मतलब वास्तव में समझते हैं ), तो आप समझते हैं, यह स्पष्ट होगा कि टार और गज़िप जोड़े में क्यों काम करते हैं।


1
यह UNIX दर्शन सुंदर है सब ठीक है, लेकिन मैं देख रहा हूँ कि यह कम में गिरता है, गैर-ठोस अभिलेखागार बनाता है। (1-GB tar.gz से एक एकल फ़ाइल निकालने से दर्द नहीं होना चाहिए, और जो मैंने यहाँ समझा है, उससे ZIP बहुत अधिक tar.gz ... सही है?)
मेहरदाद

@ मेहरद - पहला , गैर-ठोस संग्रह क्या है? जैसा कि वोल्टेयर के लिए जिम्मेदार है, "यदि आप मेरे साथ मनाएंगे, तो सबसे पहले आपको अपनी शर्तों को परिभाषित करना होगा।" दूसरा , हां पाइप और फिल्टर आर्किटेक्चर किसी भी अन्य वास्तुकला की तरह, विशिष्ट मामलों में कम है, चाहे इसकी सुंदरता कुछ भी हो। यह इंजीनियरिंग का एक माध्यम है, और यह तर्क नहीं है जो बनाया जा रहा है। तीसरा , ज़िप गज़िप और टार से बेहतर है, लेकिन यह वह नहीं था जो आपने पूछा था। आपने पूछा कि वे किस तरह से जिप और टार काम करते हैं और अगर कोई लाभ होता है, और आपको तकनीकी जवाब दिया जाता है।
luis.espinal

@ मेहरद - मुझे भी पता नहीं है कि अनजिप करने पर आपको किस तरह की समस्याओं का सामना करना पड़ता है। मैंने ऐसा कई बार किया है, gzip के पुराने इंस्टॉलेशन के साथ 2GB तक (और gzip के नए संस्करणों के साथ 4gb तक।) यदि आप इसे तार के ऊपर या NFS माउंट पर कर रहे हैं, तो duh! आप समान प्रदर्शन समस्याओं का सामना करेंगे जैसे कि सादे ज़िप के साथ किया जाता है। हेक, मैंने एक पाइप से रिमोट प्रोसेस के लिए एक सॉकेट में gzip इनपुट थूकने के लिए भी अनट्रेड किया है। कोशिश करें कि ज़िप के साथ। प्रत्येक समस्या के लिए, उपयुक्त टूल का उपयोग करें (यह टार | gz या ज़िप हो।)
luis.espinal

8

सबसे पहले, TAR को फ़ाइल अभिलेखागार बनाने के लिए नहीं बनाया गया था । यह टेप ARCHiver है । टेप से / से आर्काइव में लिखना या लोड करना काम है।

-F विकल्प के रूप में "आभासी टेप", तो किसी अन्य प्रोग्राम द्वारा संकुचित किया जा सकता है जो एक फ़ाइल का उपयोग करता है। वास्तव में, इस तरह के संपीड़न वास्तविक दुनिया के टेपड्राइव पर भी होते हैं।

बेशक, इसे अच्छी तरह से करने के लिए एक कार्यक्रम का उपयोग करने का दर्शन भी इस मामले में मायने रखता है, लेकिन किसी को याद हो सकता है कि टीएआर अभिलेखागार को सामग्री + सामग्री की निर्देशिका के बजाय एक धारा के रूप में संरचित क्यों किया जाता है।


3
सही ... ज़िप फ़ाइलों ने सभी फ़ाइल जानकारी को एक एकीकृत हेडर में डाल दिया, फिर सभी फ़ाइल सामग्री ... जिससे एक ज़िप फ़ाइल में अधिक फ़ाइलों को जोड़ना असंभव हो जाता है ... आपको पूरी फ़ाइल को फिर से लिखना होगा ... के साथ TAR प्रारूप, प्रत्येक फ़ाइल के लिए शीर्ष लेख अलग-अलग है, इसलिए आप आसानी से पूरे टेप को फिर से
लिखे

5

परंपरागत रूप से, यूनिक्स सिस्टम ने यूनिक्स दर्शन के अनुसार एक कार्य करने के लिए एक प्रोग्राम का उपयोग किया : tarकेवल एक फाइल में एक से अधिक फ़ाइलों को पैकेज करने का एक साधन था, मूल रूप से टेप बैकअप के लिए (इसलिए tar, टी एप आर चाइव)। tarसंपीड़न प्रदान नहीं करता है; परिणामी असम्पीडित संग्रह आमतौर पर कुछ अन्य प्रोग्राम जैसे , या gzip, के साथ संपीड़ित होता है । पुराने दिनों में, वे ऐसा करने के लिए कमांड का उपयोग करेंगे ; नए संपीड़न एल्गोरिदम इससे कहीं अधिक प्रभावी हैं।bzip2xzcompress

यूनिक्स दर्शन द्वारा निर्धारित अत्यधिक संशोधित दृष्टिकोण का अर्थ है कि प्रत्येक कार्यक्रम को व्यक्तिगत रूप से उपयुक्त के रूप में उपयोग किया जा सकता है, या अधिक जटिल कार्यों को करने के लिए संयुक्त किया जा सकता है, जिसमें संकुचित अभिलेखागार का निर्माण यहां वर्णित है। इन प्रकार के कार्यों के लिए, व्यक्तिगत टूल को आवश्यकतानुसार स्वैप करना आसान बनाता है; आप केवल tarउपयोगिता को बदलने के लिए, बिना एक अलग संपीड़न एल्गोरिदम का उपयोग करने के लिए संपीड़न प्रोग्राम को बदल देंगे ।

यह मॉड्यूलर दृष्टिकोण इसके नुकसान के बिना नहीं है। जैसा कि अन्य उत्तरों के लिए टिप्पणियों में उल्लेख किया गया है, जैसे एक समर्पित संकुचित संग्रह प्रारूप .zipव्यक्तिगत फ़ाइलों के निष्कर्षण को संभालने में बेहतर है; संग्रह के अंत के पास फ़ाइलों को निकालने के लिए संपीड़ित टारबॉल को लगभग पूरी तरह से विघटित करने की आवश्यकता होती है, जबकि .zipअभिलेखागार अपनी सामग्री के लिए यादृच्छिक उपयोग की अनुमति देते हैं। (कुछ नए प्रारूप, जैसे .7z, ठोस और गैर-ठोस अभिलेखागार का समर्थन करते हैं, साथ ही बड़े अभिलेखागार में अलग-अलग आकार के ठोस ब्लॉक।) tarएक अलग संपीड़न उपयोगिता के साथ संयोजन के निरंतर उपयोग परंपरा और संगतता का मामला है; भी, .7zऔर .zipअनुमति के रूप में यूनिक्स फाइल सिस्टम मेटाडेटा का समर्थन नहीं करते।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.