विभिन्न "संपीड़न" प्रणालियों के बीच अंतर क्या है?


9

मैंने हमेशा संपीड़न के लिए TAR और ZIP का उपयोग किया है, लेकिन हाल ही में मैंने *.Zसंपीड़न एल्गोरिथ्म के बारे में सुना है। यह मेरे लिए एक प्रश्न लाया:

इन सभी संपीड़न प्रणालियों के साथ, सामान्य उपयोग और संपीड़न के लिए कौन सा सबसे अच्छा है?

कुछ परीक्षणों को चलाने के बाद, मैंने पाया है कि tar, जैसा कि मैंने पाया, वास्तव में संपीड़ित नहीं होता है (जब तक कि स्पष्ट रूप से निर्दिष्ट नहीं किया जाता है)। मतलब, अन्य संपीड़न विधियों की तुलना में यह क्या अच्छा है?

मैं पहले से ही पता है कि ज़िप सबसे व्यापक रूप से इस्तेमाल किया संपीड़न प्रणाली है कर रहा हूँ, लेकिन मैं इसे बजाय का उपयोग करना चाहिए *.Z, *.7z, .tar, या .tar.<insert ending here>?

पोस्ट सारांश:

  1. मैं का उपयोग करना चाहिए *.tar, *.Z, *.7z, .tar, या .tar.<insert ending here>सबसे अच्छा संपीड़न के लिए?
  2. यदि सादा *.tarसेक नहीं करता है, तो हम इसका उपयोग क्यों करते हैं?

संपादित करें: सभी एल्गोरिदम लिनक्स अनुमतियों के भंडारण की अनुमति नहीं देते हैं (जो मैंने सीखा है)। जो करते हैं, और क्या मैं किसी प्रकार की हैक (या स्क्रिप्ट) है जो मैं अनुमतियों को स्टोर करने के लिए उपयोग कर सकता हूं?


उस सामान को कहने की कोई आवश्यकता नहीं है, बस या तो शीर्ष मतदान करने वाले को चुनें या आपको सबसे अधिक उपयोगी पाया गया :)
सेठ

जवाबों:


17

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

ज़िप और 7z संग्रह और संपीड़न को अपने स्वयं के कंटेनर प्रारूप में एक साथ जोड़ते हैं, और वे फ़ाइलों को एक डॉस / विंडोज सिस्टम पर पैक करने के लिए होते हैं, इसलिए वे यूनिक्स अनुमतियों और स्वामित्व को संग्रहीत नहीं करते हैं। इस प्रकार यदि आप उचित बैकअप के लिए अनुमतियाँ संग्रहीत करना चाहते हैं, तो आपको टार के साथ रहना होगा। यदि आप विंडोज उपयोगकर्ताओं के साथ फ़ाइलों के आदान-प्रदान पर योजना बनाते हैं, तो ज़िप या 7z अच्छा है। वास्तविक संपीड़न एल्गोरिदम ज़िप और 7zip का उपयोग टार के साथ, uzing gzipऔर lzmaक्रमशः किया जा सकता है।

lzma (aka। * .xz) में सबसे अच्छा संपीड़न अनुपात है, और यह इन दिनों एक शीर्ष विकल्प है, जो विघटन में काफी तेज है। हालांकि, इसे सेक करने के लिए एक टन रैम और सीपीयू समय की आवश्यकता होती है। आदतन gzipसंपीड़न में काफी तेज है, इसलिए यदि आप उस सीपीयू समय को समर्पित नहीं करना चाहते हैं, तो इसका उपयोग किया जा सकता है। इसका एक और भी तेज संस्करण है जिसे lzop कहा जाता है। bzip2यह अभी भी काफी लोकप्रिय है क्योंकि यह काफी हद तक 7zip / lzma के आने से पहले एक समय के लिए gzip को बदल देता है, क्योंकि इसमें बेहतर संपीड़न अनुपात मिला है, लेकिन इन दिनों पक्ष से बाहर हो रहा है क्योंकि 7z / lzma decompression में तेज है और बेहतर संपीड़न अनुपात प्राप्त करता है। compressउपयोगिता, जो आम तौर पर नाम फ़ाइलों .Z *, प्राचीन और लंबे समय तक भूल है।

जिप और टार के बीच एक अन्य महत्वपूर्ण अंतर यह है कि जिप छोटे चंक्स में डेटा को संपीड़ित करता है, जबकि जब आप एक टार फ़ाइल को संपीड़ित करते हैं, तो आप एक ही बार में पूरी चीज़ को संपीड़ित करते हैं। उत्तरार्द्ध बेहतर संपीड़न अनुपात देता है, लेकिन संग्रह के अंत में एक भी फ़ाइल निकालने के लिए, आपको इसे प्राप्त करने के लिए पूरी बात को डिकम्प्रेस करना होगा। इस प्रकार एक बड़े संग्रह से एकल फ़ाइल या दो निकालने में जिप प्रारूप बेहतर है। 7z और darआप आसानी से टुकड़े टुकड़े निष्कर्षण के लिए पूरी बात (जिसे "ठोस" मोड कहा जाता है) या छोटे विखंडू को चुनने की अनुमति देते हैं।


लेकिन, केवल TAR मेटाडेटा का समर्थन करता है? या क्या gzip / bzip2 भी अब मेटाडेटा का समर्थन करता है
कज़ वोल्फ

@pacificfils, कम्प्रेशन यूटिलिटीज केवल एक ही फाइल को कम्प्रेस करता है, जिसमें कोई मेटाडेटा नहीं है।
Psusi

क्या कोई फ़ोल्डर को टारगेट कर सकता है और फिर उसे ज़िप में डाल सकता है और अनुमतियों को संरक्षित कर सकता है?
कज़ वोल्फ

@pacificfils, हाँ, लेकिन यह थोड़ा मूर्खतापूर्ण होगा क्योंकि आप ज़िप के लाभों और बेहतर संपीड़न अनुपात को छोड़ देंगे gzip
Psusi

@pacificfils tar cfpअनुमतियां संरक्षित करेगा। एक टार फ़ाइल असंपीड़ित है, इसलिए ज़िप (7-ज़िप), gzip2, gzip, lzo, आदि सभी एक टार फ़ाइल को अच्छी तरह से संपीड़ित करेंगे (सामान्य रूप से, संपीड़ित फ़ाइलों का एक टार संपीड़ित होने की संभावना नहीं है)।
इलियट फ्रिस्क

9

एल्गोरिदम का विवरण यहां विषय 1 से है क्योंकि वे किसी भी तरह से लिनक्स के लिए विशिष्ट नहीं हैं, अकेले उबंटू चलो। हालाँकि, आप यहाँ कुछ अच्छी जानकारी पाएंगे ।

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

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

यह वर्णन करने के लिए, क्योंकि यह टिप्पणियों में लड़ा गया है, मेरे 68 जी /विभाजन पर, मेरे पास कुल और उपयोग किए गए इनोड की संख्या है (ध्यान रखें कि इनोड गणना फ़ाइल सिस्टम प्रकार और विभाजन के आकार पर निर्भर करती है):

Inode count:              393216
Free inodes:              171421

यदि अब मेरे पास इनसाइड की तुलना में अधिक फाइल बनाने का प्रयास करने के लिए आगे बढ़ा है:

$ touch {1..171422}
touch: cannot touch ‘171388’: No space left on device
touch: cannot touch ‘171389’: No space left on device
touch: cannot touch ‘171390’: No space left on device
touch: cannot touch ‘171391’: No space left on device
touch: cannot touch ‘171392’: No space left on device
touch: cannot touch ‘171393’: No space left on device
touch: cannot touch ‘171394’: No space left on device
touch: cannot touch ‘171395’: No space left on device
touch: cannot touch ‘171396’: No space left on device
touch: cannot touch ‘171397’: No space left on device

कोई जगह नहीं? लेकिन मेरे पास अंतरिक्ष का भार है:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       5,8G  4,3G  1,2G  79% /

जैसा कि आप ऊपर देख सकते हैं, कुछ सौ हज़ार खाली फाइलें तेजी से मेरे इनकोड को कम करती हैं और मैं अब नए नहीं बना सकता। अगर मैं tarये होता तो मैं फिर से फाइल बनाना शुरू कर देता।

कम फाइलें होने से भी फाइल सिस्टम I / O में विशेष रूप से NFS माउंटेड फाइल सिस्टम पर तेजी आती है। मैं हमेशा अपनी पुरानी कार्य निर्देशिकाओं को टारगेट करता हूं जब मेरे पास कम फाइलों के बाद से एक परियोजना समाप्त होती है, तो तेज प्रोग्राम जैसे findकाम करेंगे।

सुपर उपयोगकर्ता पर एक महान जवाब है जो कहीं अधिक विस्तार में जाता है, लेकिन उपरोक्त के अलावा, अन्य बुनियादी कारण tarजो आज भी हैं:

  1. दक्षता: tarजैसे gzipकि यह मध्यवर्ती फ़ाइलों के निर्माण से बचा जाता है एक संपीड़न कार्यक्रम के माध्यम से पाइप का उपयोग करना अधिक कुशल है।

  2. tar सभी प्रकार की घंटियाँ और सीटी बजती हैं, सुविधाएँ जो इसके लंबे इतिहास पर डिज़ाइन की गई हैं जो इसे विशेष रूप से * nix बैकअप (सोचने की अनुमति, फ़ाइल स्वामित्व, सीधे डेटा को STDOUT और SSH लिंक पर पाइप करने की क्षमता के लिए उपयोगी बनाती हैं ...) )

  3. जड़ता। हम अभ्यस्त हैं tar। यह मान लेना सुरक्षित है कि यह आपके द्वारा उपयोग किए जा सकने वाले किसी भी * निक्स पर उपलब्ध होगा जो इसे स्रोत कोड तारकोल के लिए बहुत पोर्टेबल और आसान बनाता है।


1 यह बिल्कुल सच है और इस तथ्य से कोई लेना देना नहीं है कि मुझे समझाने के लिए उनके बारे में पर्याप्त नहीं पता है :)


3
मेरा कंप्यूटर 10,000,000 फाइलों के ऊपर (अतीत में) पड़ा है, और यह वास्तव में बहुत पागल नहीं है। मैं कभी भी tar"फाइलों की संख्या को कम करने" के लिए उपयोग नहीं करता हूं क्योंकि अधिकांश फाइल सिस्टम स्पष्ट रूप से परवाह नहीं करते हैं, और यह वास्तव में वैसे भी इष्टतम नहीं है क्योंकि tarफाइलों में आसान यादृच्छिक पहुंच का समर्थन नहीं करता है। बल्कि, मुख्य उपयोग (मेरे लिए और मुझे लगता है कि ज्यादातर लोगों के लिए) एक सरल तरीके से अन्य लोगों के साथ फ़ाइलें (जैसे स्रोत कोड) साझा करना है।
nnonneo

@nneonneo क्या आपने कभी एक ही डायरेक्टरी में लाखों फाइलों के साथ काम किया है ? मेरा मानना ​​है कि यह आसान नहीं है। के साथ स्पष्ट समस्याओं के अलावा ARG_MAX, यह किसी भी तरह से आपकी फ़ाइलों के साथ एक परेशानी का सामना कर सकता है और वास्तव में एक (बुरी तरह से स्थापित) नेटवर्क ला सकता है जहां फाइलें एक केंद्रीय सर्वर में संग्रहीत होती हैं और एनएफएस के साथ अपने घुटनों पर साझा की जाती हैं। समग्र रूप से फ़ाइलों की संख्या कम करने के लिए, आपको नोटिस करने के लिए इससे अधिक फ़ाइलों की आवश्यकता होगी, लेकिन बहु उपयोगकर्ता सेटअप में, इनोड की संख्या वास्तव में सीमित हो सकती है।
टेराडन

@nneonneo एक अधिक ठोस उदाहरण देने के लिए, tune2fs -lमेरे $ HOME के ​​विभाजन पर मुझे बताता है कि मेरे पास 19,300,352 इनकोड हैं। मैं इससे ज्यादा फाइल नहीं बना पाऊंगा। जैसा कि आपने कहा, 10 ^ 6 पागल नहीं है, वास्तव में उच्च श्रेणी में भी नहीं। आप जो कर रहे हैं, उसके आधार पर आपको इससे अधिक रास्ते की आवश्यकता हो सकती है।
टेराडन

@nneonneo एक वास्तविक दुनिया उदाहरण के लिए अद्यतन उत्तर देखें कि आप आसानी से इनोड से बाहर कैसे भाग सकते हैं।
टेराडॉन

मेरा सर्वर केवल 1 मिलियन से अधिक इनकोड का उपयोग कर रहा है और यह केवल इसलिए है क्योंकि मेरे पास एक मीट्रिक टन ईमेल (बहुत सारे उच्च ट्रैफ़िक मेलिंग सूची वर्षों के लिए वापस जा रहे हैं) और इसे मेलडिर प्रारूप में संग्रहीत करता है। मुझे पता नहीं है कि आप संभवतः 19 मिलियन इनोड का उपयोग करने के लिए क्या कर सकते हैं। 7 महीने से अधिक के लिए आपको हर दूसरे दिन 24 घंटे एक नई फ़ाइल बनानी होगी।
18

4

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

यूनिक्स पर, दोनों ऑपरेशन अलग-अलग हैं, प्रत्येक के लिए अलग-अलग उपकरण हैं। अधिकांश अन्य प्लेटफार्मों पर (वर्तमान और ऐतिहासिक) संयुक्त उपकरण संग्रह और संपीड़न दोनों करते हैं।

(gzip और अन्य प्रोग्राम जो gzip के इंटरफ़ेस की नकल करते हैं, अक्सर संपीड़ित आउटपुट में मूल फ़ाइल नाम को संग्रहीत करने का विकल्प होता है, लेकिन यह, भ्रष्टाचार का पता लगाने के लिए CRC या अन्य चेक के साथ, एकमात्र मेटाडेटा है जिसे वे स्टोर कर सकते हैं।)

संग्रह से संपीड़न को अलग करने के फायदे हैं। संग्रह प्लेटफ़ॉर्म-विशिष्ट है (फाइल सिस्टम मेटाडेटा को संरक्षित करने की आवश्यकता व्यापक रूप से भिन्न होती है), लेकिन कार्यान्वयन सीधा है, मोटे तौर पर I / O- बाध्य, और समय के साथ थोड़ा बदलता है। संपीड़न प्लेटफ़ॉर्म-स्वतंत्र है, लेकिन कार्यान्वयन सीपीयू-बाउंड हैं और एल्गोरिदम लगातार बढ़े हुए संसाधनों का लाभ उठाने के लिए सुधार कर रहे हैं जो आधुनिक हार्डवेयर समस्या को सहन कर सकते हैं।

सबसे लोकप्रिय यूनिक्स अभिलेखागार है tar, हालांकि इस तरह के रूप में अन्य मौजूद हैं cpioऔर ar। (डेबियन पैकेज arअभिलेखागार होते हैं , जबकि cpioअक्सर इनटल रामदिस्क के लिए उपयोग किया जाता है।) tarको अक्सर compress(.Z), gzip(.gz), bzip2(.bz2) और xz(.xz), जैसे सबसे पुराने से कम उम्र के संपीड़न उपकरणों के साथ जोड़ा जाता है। , और संयोग से सबसे खराब संपीड़न से नहीं।

एक tarसंग्रह बनाना और इसे संपीड़ित करना अलग चरण हैं: कंप्रेसर tarफ़ाइल प्रारूप के बारे में कुछ नहीं जानता है । इसका मतलब यह है कि संपीड़ित tarसंग्रह से किसी एक फ़ाइल को निकालने के लिए पूर्ववर्ती फ़ाइलों के सभी डिकम्प्रेसिंग की आवश्यकता होती है। इसे अक्सर "ठोस" संग्रह कहा जाता है।

समान रूप से, चूंकि टार एक "स्ट्रीमिंग" प्रारूप है - इसके लिए एक पाइपलाइन में उपयोगी होना आवश्यक है - टार संग्रह में कोई वैश्विक सूचकांक नहीं है, और टार संग्रह की सामग्री को सूचीबद्ध करना उतना ही महंगा है जितना इसे निकालना।

इसके विपरीत, ज़िप और आरएआर और 7-ज़िप (आधुनिक विंडोज प्लेटफॉर्म पर सबसे लोकप्रिय आर्काइव) आमतौर पर प्रत्येक फ़ाइल को अलग-अलग संपीड़ित करते हैं, और मेटाडेटा को हल्के से संपीड़ित करते हैं। यह एक संग्रह में फ़ाइलों की सस्ती लिस्टिंग और व्यक्तिगत फ़ाइलों को निकालने की अनुमति देता है, लेकिन इसका मतलब है कि एक ही संग्रह में एक से अधिक फ़ाइलों के बीच अतिरेक का उपयोग संपीड़न बढ़ाने के लिए नहीं किया जा सकता है। सामान्य तौर पर पहले से संपीड़ित फ़ाइल को संपीड़ित करने से फ़ाइल का आकार कम नहीं होता है, कभी-कभी आपको ज़िप फ़ाइल के भीतर एक ज़िप फ़ाइल दिखाई दे सकती है: पहली ज़िपिंग ने बहुत सारी छोटी फ़ाइलों को एक बड़ी फ़ाइल में बदल दिया (संभवतः संपीड़न अक्षम) के साथ, जो दूसरी है zipping तो एक इकाई के रूप में संकुचित।

अलग-अलग प्लेटफार्मों और दर्शन के बीच क्रॉस-परागण है: gzipअनिवार्य रूप से zipइसके अभिलेखागार के बिना कंप्रेसर है, और xzअनिवार्य रूप से 7-zipइसके अभिलेखागार के बिना कंप्रेसर है।

अन्य, विशेष कम्प्रेसर हैं। पीपीएम वेरिएंट और उनके उत्तराधिकारी ZPAQसंसाधन खपत के संबंध में अधिकतम संपीड़न के लिए अनुकूलित हैं। वे आसानी से सीपीयू और रैम को चबा सकते हैं जैसा कि आप उन पर फेंक सकते हैं, और विघटन संपीड़न के रूप में कर के रूप में है (इसके विपरीत, सबसे व्यापक रूप से उपयोग किए जाने वाले संपीड़न उपकरण असममित हैं : डिकम्प्रेसिंग संपीड़ित करने से सस्ता है)।

स्पेक्ट्रम के दूसरे छोर पर lzo, snappyऔर LZ4संपीड़न की लागत पर "प्रकाश" कम्प्रेसर अधिकतम गति और न्यूनतम संसाधन खपत के लिए डिज़ाइन किए गए हैं। वे व्यापक रूप से फाइलसिस्टम और अन्य ऑब्जेक्ट स्टोर के भीतर उपयोग किए जाते हैं, लेकिन स्टैंडअलोन टूल के रूप में कम।


तो आपको कौन सा चुनना चाहिए?

संग्रह:

जब से आप उबंटू पर हैं tar, तब तक संग्रह करने के अलावा और कुछ भी उपयोग करने का कोई वास्तविक कारण नहीं है , जब तक कि आप उन फ़ाइलों को बनाने की कोशिश नहीं कर रहे हैं जो आसानी से कहीं और पढ़ने योग्य हैं।

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

संपीड़न:

अधिकतम संपीड़न के लिए आप एक बेंचमार्क पर नज़र रख सकते हैं, जैसे कि http://mattmahoney.net/dc/text.html पर विशाल । इससे आपको इसमें शामिल ट्रेडऑफ का बेहतर विचार देना चाहिए।

आप शायद अधिकतम संपीड़न नहीं चाहते हैं, हालांकि। यह बहुत महंगा है।

xzआधुनिक यूनिक्स सिस्टम पर सबसे लोकप्रिय सामान्य-उद्देश्य संपीड़न उपकरण है। मेरा मानना ​​है कि 7-ज़िप xz फ़ाइलों को भी पढ़ सकते हैं, क्योंकि वे निकटता से संबंधित हैं।

अंत में: यदि आप अल्पकालिक भंडारण के अलावा किसी अन्य चीज़ के लिए डेटा संग्रह कर रहे हैं, तो आपको बाद में सिरदर्द को कम करने के लिए कुछ खुले स्रोत और अधिमानतः व्यापक रूप से चुनना चाहिए।


1

lzo, gz, b2, lzma (.lzma2 =.xz)"स्ट्रीम" कंप्रेशर्स हैं: वे बायर्स की एक स्ट्रीम को नहीं जानते हैं और अनुमति जैसी फ़ाइलों, निर्देशिकाओं और मेटाडेटा के बारे में परवाह नहीं करते हैं। आपको उस डेटा को बाइट्स (एक टार फ़ाइल) की एक धारा में और एक कंप्रेसर के साथ संपीड़ित करने के लिए टार जैसे एक संग्रहकर्ता का उपयोग करना होगा। यदि यह आपके द्वारा परवाह की जाने वाली एकल फ़ाइल का डेटा है, तो आप उस फ़ाइल को इन कंप्रेशर्स में से किसी एक को भी खिला सकते हैं।

Tar, cpio and paxअभिलेखागार हैं: वे फ़ाइलों और निर्देशिकाओं का एक गुच्छा लेते हैं और डेटा और मेटाडेटा को एक ही फ़ाइल में एन्कोड करते हैं। टार सबसे लोकप्रिय और सबसे अधिक अनुकूल है, हालांकि तीनों के बीच तकनीकी योग्यता काफी कम है कि समय की सुबह के दौरान इसके बारे में धार्मिक युद्ध थे।

7z और ज़िप कंप्रेशर्स और आर्कषक हैं: फिर सभी डेटा और मेटा डेटा स्टोर करें और इसे कंप्रेस करें। हालांकि AFAICT, दोनों में से कोई भी यूनिक्स अनुमति नहीं बचाता है।

ज़िप उसी एल्गोरिथ्म का उपयोग करता है जैसे gzip को DEFLATE कहा जाता है। 7z lzma कलन विधि का उपयोग करता है

tar.gz या इस तरह से एक भी फाइल को पढ़ने के लिए, आपको पूरी gz स्ट्रीम को तब तक डिकम्पोज करना होगा, जब तक कि टार फाइल पर्याप्त नहीं हो जाती है, इसलिए आप इसे निकाल सकते हैं। ज़िप आपको प्रत्येक फ़ाइल को व्यक्तिगत रूप से संपीड़ित करने और बाहर निकालने की अनुमति देता है। 7z में या तो व्यवहार हो सकता है।

संपीड़न अनुपात और गति: gzip और lzo में बहुत तेज संपीड़न और विघटन गति है लेकिन कम संपीड़न अनुपात है। यह संपीड़ित करने के लिए बहुत अधिक मेमोरी नहीं लेता है। गज़िप थोड़ा धीमा है और लोज़ो की तुलना में थोड़ा बेहतर संपीड़न अनुपात देता है।

यह बहुत तेज़ है, यह डिस्क से एक gz या lzo संपीड़ित फ़ाइल को पढ़ने के लिए तेज़ हो सकता है और डिस्क से सीधे असम्पीडित फ़ाइल को पढ़ने के बजाय इसे मक्खी पर डिकम्प्रेस कर सकता है।

LZMA (xz) सामान्य डेटा पर उत्कृष्ट संपीड़न देता है, लेकिन संपीड़ित और विघटित करने के लिए स्मृति को महत्वपूर्ण मात्रा में लेने के साथ-साथ संपीड़ित करने में बहुत लंबा समय लगता है।

bz2 पसंद की उच्च संपीड़न एल्गोरिथ्म हुआ करता था लेकिन पक्ष से बाहर हो गया क्योंकि यह lzma की तुलना में दोनों धीमा है और संपीड़ित और डीकंप्रेस करने में अधिक समय लेता है। हालांकि कुछ प्रकार के डेटा (dna अनुक्रमों के लिए, एक ही बाइट के बहुत बड़े रन आदि के साथ फ़ाइलें) bzip2 बाकी सब को हाथों से हरा सकता है। एक उदाहरण के रूप में, मुझे एक बार 1 की 4 जीबी फ़ाइल को संपीड़ित करना पड़ा और बी 2 ने मुझे कुछ 10 केबी तक घटा दिया, जबकि अगर मुझे सही याद है तो लज़मा ने कुछ 10 एमबी का लिया।


दरअसल लज़मा डिकम्प्रेसिंग में बहुत तेज़ है।
Psusi

0

विशेष रूप से बड़ी फ़ाइलों के लिए, आप उपयोग कर सकते हैं rzip। यह पहले 900 एमबी बड़े ब्लॉकों के अंदर अनावश्यक डेटा को देखता है, इनको एन्कोड करता है, और फिर डेटा को bzip2 को सौंप देता है (वास्तव में नहीं, लेकिन समान एल्गोरिदम का उपयोग किया जाता है)।

प्रभाव? बहुत तेजी से xz, lzmaया bzip2, और मेरे अनुभव में इसके संपीड़न अनुपात प्रतिद्वंद्वियों के lzma। यह एक रैम हॉग है, हालांकि।

http://en.wikipedia.org/wiki/Rzip

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