मैं फ़ाइलों को संपीड़ित करने के लिए संग्रह प्रारूप का सबसे अच्छा विकल्प कैसे मूल्यांकन कर सकता हूं?


24

सामान्य तौर पर, मैंने निम्नलिखित देखा है:

  • लिनक्स-वाई फाइलें या उपकरण अभिलेखागार वितरित करने के लिए bzip2 या gzip का उपयोग करते हैं
  • विंडोज-वाई फाइलें या उपकरण अभिलेखागार वितरित करने के लिए ज़िप का उपयोग करते हैं
  • कई लोग अपने स्वयं के अभिलेखागार बनाने और वितरित करने के लिए 7-ज़िप का उपयोग करते हैं

प्रशन:

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



@ सत्य, @Andreas: लिंक के लिए धन्यवाद, वे मददगार हैं और मेरे सवाल का जवाब दे रहे हैं। :)
मेहरदाद

1
संपीड़न एक बहुत ही जटिल क्षेत्र है, और कोई भी एल्गोरिथ्म सब कुछ के लिए इष्टतम परिणाम नहीं दे सकता है - इसके अलावा, यह एक समस्या है जो आप संसाधनों को फेंक सकते हैं और बेहतर परिणाम प्राप्त कर सकते हैं, लेकिन एक ऐसा भी है जो लगभग बहुत कम समय में भी किया जा सकता है। कुछ एल्गोरिदम तेज और मेमोरी लाइट होने पर ध्यान केंद्रित करते हैं, कुछ सबसे छोटी संभव फ़ाइल का उत्पादन करने पर ध्यान केंद्रित करते हैं, भले ही इसे करने में आपको कितनी देर लगे या 12GB RAM (अतिशयोक्तिपूर्ण नहीं) की आवश्यकता हो, इत्यादि।
जोशी

1
@ घोषी, इसका जवाब होना चाहिए।
यिट्ज़चाक

जवाबों:


16

संपीड़न प्रारूपों और विधियों की एक बड़ी विविधता उपलब्ध है, कुछ बिल्कुल भी संपीड़ित नहीं करते हैं और एक संग्रह में कई फ़ाइलों को संग्रहीत करने के लिए डिज़ाइन किए गए हैं, और अन्य नए प्रयोगात्मक कम्प्रेसर ( PAQ आधारित) को यथासंभव आक्रामक रूप से संपीड़ित करने के लिए डिज़ाइन किया गया है, समय की परवाह किए बिना कहा कि ऑपरेशन करने के लिए।

आपको अपनी संपीड़न विधि पसंद से आवश्यक सुविधाओं का मूल्यांकन करने की आवश्यकता है, और उस संदर्भ पर भी विचार करें जिसमें इसका उपयोग किया जाएगा।

विभिन्न विशेषताओं और विचारों में शामिल हैं:

  • संपीड़न क्षमता - क्या यह फ़ाइल को पर्याप्त रूप से सिकोड़ती है?
  • उपयोग में आसानी - यदि फ़ाइल किसी अन्य उपयोगकर्ता के लिए जा रही है, तो क्या संग्रह को निकालना आसान होगा या इसे स्थापित करने के लिए अधिक सॉफ़्टवेयर की आवश्यकता होगी?
  • पासवर्ड सुरक्षा और / या एन्क्रिप्शन - क्या ये सुरक्षा उपाय आवश्यक हैं?
  • एकाधिक संस्करणों का समर्थन - यदि लक्ष्य माध्यम के लिए फ़ाइल को उपयुक्त विखंडू में विभाजित करने की आवश्यकता होती है, तो क्या प्रारूप इस सुरुचिपूर्ण तरीके से समर्थन करता है। उदाहरण के लिए, एक सीडी के लिए 650 एमबी।
  • मरम्मत और पुनर्प्राप्ति - यदि फ़ाइल आंशिक रूप से भ्रष्ट हो जाती है, तो क्या यह डेटा की बहाली में सहायता के लिए रिकवरी रिकॉर्ड प्रदान करता है?
  • यूनिकोड समर्थन - क्या अभिलेखागार अंतरराष्ट्रीय फ़ाइल नामों या सिर्फ मानक ASCII का समर्थन करता है?
  • सिस्टम आवश्यकताएँ - 7-ज़िप जैसे आधुनिक कंप्रेशर्स बड़े शब्दकोश का उपयोग करके संपीड़न दक्षता को बढ़ाने की क्षमता प्रदान करते हैं (एक शब्दकोश एक संपीड़ित फ़ाइल में आमतौर पर दोहराया डेटा का एक संदर्भ है), लेकिन यह बदले में संपीड़न और मेमोरी दोनों में मेमोरी की खपत को बढ़ाता है विघटन का समय।
  • स्व-निष्कर्षण समर्थन - क्या पुरालेख को एक निष्पादन योग्य फ़ाइल में रोल किया जा सकता है जो इसे उपयोग करने के लिए किसके लिए उपयोग की आसानी प्रदान करता है? (यह भी ध्यान में रखें कि आप केवल एक ही मंच के लिए एक सेल्फ-एक्सट्रैक्टर बना सकते हैं। सामान्यतया विंडोज सेल्फ-एक्सट्रैक्टर बोलना लिनक्स पर डिफ़ॉल्ट रूप से काम नहीं करेगा, जब तक कि वाइन जैसी अनुकूलता परत से न चले)।
  • फ़ाइल सिस्टम विशेषताएँ - क्या कंप्रेसर स्टोर प्रासंगिक फ़ाइल सिस्टम मेटाडेटा और अनुमतियाँ हैं जो निष्कर्षण के बिंदु पर संरक्षित करने के लायक हो सकती हैं?

आम तौर पर बोलने वाला ज़िप सबसे सर्वव्यापी प्रारूप होता है, लेकिन 4 जीबी से अधिक के आकारों को आम तौर पर समर्थन नहीं किया जाता है (यदि बिल्कुल भी), सुरक्षा समर्थन को आमतौर पर खराब माना जाता है (मानक पासवर्ड को एक सादे-पाठ के हमले के साथ समझौता किया जा सकता है, और आगे एन्क्रिप्शन है) आम तौर पर वाणिज्यिक ज़िप सॉफ्टवेयर विक्रेताओं द्वारा प्रारूप के अनौपचारिक व्युत्पन्न के रूप में लागू किया जाता है)।

इसके अलावा, अधिकांश अन्य लोकप्रिय प्रारूपों में अधिक सॉफ़्टवेयर स्थापित करके सभी ऑपरेटिंग सिस्टम पर किसी प्रकार का समर्थन होगा।

मेरी व्यक्तिगत पसंद 7-ज़िप है , क्योंकि इसमें महान और लचीला संपीड़न है; इसके बावजूद विंडोज पर एक अजीब यूजर इंटरफेस है। लिनक्स और मैक ओएस एक्स के लिए डी-कम्प्रेसर हैं (हालांकि मानक के रूप में जीयूआई आधारित नहीं)।


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

सूचना के लिए +1 धन्यवाद, हालांकि यह उल्लेख करना बेहतर होगा कि कौन से प्रारूप उन बुलेट बिंदुओं का समर्थन करते हैं। :)
मेहरदाद

मुझे लुभाया गया, लेकिन कई प्रकार के प्रारूप उपलब्ध हैं, जिन्हें सूचीबद्ध करने में लंबा समय लगेगा। विकिपीडिया में संपीड़न प्रारूपों का एक अच्छा फीचर मैट्रिक्स है जो मदद कर सकता है: en.wikipedia.org/wiki/Comparison_of_archive_formats
Ruairi Fullam

1
जब यह संग्रह फ़ाइलों को स्वयं निकालने की बात आती है तो इतिहास एक महत्वपूर्ण सबक सिखाता है। दो दशक पहले से सेल्फ-एक्स्ट्रेक्टिंग आर्काइव्स हैं जो लोग अब सेल्फ-एक्स्ट्रेक्ट नहीं कर सकते क्योंकि उनकी मशीनें MS / PC-DOS प्रोग्राम नहीं चला सकती हैं, या क्योंकि प्रोसेसर को बदलने के परिणामस्वरूप सेल्फ-एक्सट्रैक्टर प्रोग्राम क्रैश हो जाते हैं, या क्योंकि सेल्फ- एक्सट्रैक्टर्स शिकायत करते हैं कि डिस्क तब भरी होती है जब वे नहीं होते हैं क्योंकि वे डिस्क के इतने बड़े होने की उम्मीद नहीं करते हैं, या ...
JdeBP

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

8

एक चीज़ जो दिमाग में आती है वह है (दो साल पुरानी) जेफ एटवुड की ब्लॉग पोस्ट: मल्टी-कोर एरा में फाइल कंप्रेशन । उस लेख में उन्होंने पाया कि bzip2 outperforms 7-zip जब दो से अधिक कोर चल रहे हैं।


+1 omg! मुझे नहीं पता था। संपीड़न अनुपात इसके लायक नहीं लगता है, हालांकि। :)
मेहरदाद

2
वह पद 2 वर्ष से अधिक पुराना है। क्या 7-ज़िप अब दो से अधिक कोर के साथ बेहतर काम नहीं करता है?
क्रेगॉक्स

BZIP2 कई कोर पर अधिक कुशलता से संपीड़ित करता है क्योंकि यह 100-900KB ब्लॉकों में संकुचित होता है, इस प्रकार अलग-अलग कोर पर ब्लॉक फैल सकता है, लेकिन संपीड़न दक्षता खो जाती है क्योंकि इन ब्लॉकों को एक दूसरे से अलग माना जाता है।
रुआरी फुलम

4

आपके पहले प्रश्न के लिए, 7-ज़िप एक अभिलेखागार है जो डेटा को संपीड़ित और विघटित करने के लिए कई एल्गोरिदम का उपयोग कर सकता है।

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


जबकि मैं व्यक्तिगत रूप से चित्रमय आरएआर कार्यक्रमों से नफरत करता हूं और हमेशा कमांड लाइन का उपयोग करता हूं, यहां तक ​​कि विंडोज पर भी।
CarlF

4

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

  • .tar.gz और tar.bz2 अभिलेखागार लिनक्स सिस्टम पर उपयोग के लिए आदर्श हैं (और लिनक्स उपयोगकर्ताओं के साथ फ़ाइलों को साझा करने के लिए विस्तार से) क्योंकि टार, गज़िप और बज़िप 2 उपकरण मंच पर बड़े पैमाने पर सर्वव्यापी हैं, और क्योंकि .tar प्रारूप में पूर्ण है। यूनिक्स अनुमतियों और अन्य प्लेटफॉर्म-विशिष्ट गुणों के लिए समर्थन। टार आर्काइव को संक्षिप्त करने के लिए gzip और bzip2 के बीच चयन मुख्य रूप से गति बनाम संपीड़न अनुपात के बारे में एक निर्णय है, bzip2 छोटी फ़ाइलों को वितरित करने के साथ लेकिन बहुत धीमी संपीड़न गति के साथ। इन प्रारूपों के नुकसान में विंडोज के साथ कम संगतता शामिल है और (संभावित) को एकल फ़ाइल को निकालने के लिए पूरे संग्रह को अनसुना करने की आवश्यकता है।

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

  • 7-ज़िप अच्छा है यदि आप सबसे अच्छा संभव संपीड़न अनुपात चाहते हैं। ज़िप की तरह, यह यूनिक्स फ़ाइल अनुमतियों या स्वामित्व का समर्थन नहीं करता है, और यह भी अधिकांश प्लेटफार्मों पर डिफ़ॉल्ट रूप से स्थापित नहीं होता है जो इसे उपयोग करने के लिए थोड़ा अधिक काम करता है, लेकिन संपीड़न अनुपात लाभ महत्वपूर्ण होने पर यह विंडोज पर इसके लायक हो सकता है। ऑल-लिनक्स वातावरण में टार के साथ-साथ 'xz' या 'lzma' कम्प्रेशन टूल्स का उपयोग करना बेहतर होगा, जो 'gzip' और 'bzip2' की तरह ही संचालित होता है, लेकिन 7 जैसे अधिक उन्नत LZZ एल्गोरिथ्म का उपयोग करें -Zip।


2

एक उदाहरण के रूप में, मैं इन मामलों में उल्लिखित स्वरूपों का उपयोग करता हूं:

  • पाठ फ़ाइलें (विशेष रूप से लॉग): bz2
  • वितरित की जाने वाली फ़ाइलों का संग्रह (जैसे स्रोत कोड): gz (tar.gz वास्तव में)।
  • मिश्रित फ़ाइलें: 7zip। मैं बहुत कुशल तरीके से लगभग किसी भी चीज को कंप्रेस कर सकता हूं। क्रॉस-प्लेटफ़ॉर्म, ओपन-सोर्स, स्थिर, हल्का, फ़ाइल (हेडर और डेटा) एन्क्रिप्शन, ... क्या आप कुछ और मांग सकते हैं? :)

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

PS: मैं उबंटू (मुख्य रूप से) और विंडोज (ड्यूल बूट और वर्चुअलबॉक्स दोनों) चलाता हूं।


1

कम से कम चार अलग-अलग नौकरियां हैं जो अक्सर एक साथ भ्रमित होती हैं क्योंकि लोकप्रिय उपकरण उन्हें एकीकृत करते हैं:

  1. संग्रह: एक फ़ाइल में कई फ़ाइलों (मेटाडेटा सहित) को संयोजित करने की क्षमता, जितना संभव हो उतना चीजों को संरक्षित करना। लिनक्स / यूनिक्स दुनिया में, पारंपरिक रूप से TAR फ़ाइल प्रारूप में किया जाता है।
  2. संपीड़न: द्विआधारी डेटा की एक धारा के आकार को दोषरहित करने की क्षमता। लिनक्स / यूनिक्स दुनिया में, यह पारंपरिक रूप से GZip और BZip2 द्वारा किया जाता है।
  3. एन्क्रिप्शन: चाबियाँ के साथ डेटा हाथापाई करने की क्षमता
  4. चेकसम: त्रुटियों का पता लगाने की क्षमता (और संभवतः सही)।

.Tar.gz और .tar.bz की सर्वव्यापकता एक ही काम करने वाले एक से अधिक टूल को एक ही काम करने वाले छोटे टूल के यूनिक्स दर्शन से मेल खाती है। TAR फ़ाइल प्रारूप संपीड़न या एन्क्रिप्शन का समर्थन नहीं करता है, लेकिन इसे किसी भी कंप्रेसर (जैसे .tar.zip या .tar.7z) द्वारा आगे संकुचित किया जा सकता है। GZip और BZip2 का काम बस एक फ़ाइल स्ट्रीम को किसी अन्य फ़ाइलस्ट्रीम में संपीड़ित करना है, संपीड़न परत को मेटाडेटा या एन्क्रिप्शन या चेकसम को संरक्षित करने की देखभाल करने की आवश्यकता नहीं है। हालांकि समय के tarसाथ, एक कंप्रेसर के साथ और अधिक आसानी से काम करने के लिए कार्यक्रम में कई शॉर्टकट बनाए गए हैं ।

ज़िप और 7z फ़ाइल प्रारूप में, ये अलग-अलग काम एक एकल सुपर फ़ाइल प्रारूप में एक कार्यक्रम द्वारा किए जाते हैं।

उपरोक्त प्रवृत्ति क्यों पकड़ में आती है, भले ही ये सभी पोर्टेबल प्रारूप हैं? क्या किसी विशेष प्लेटफॉर्म पर किसी विशेष संग्रह प्रारूप का उपयोग करने के लिए कोई विशेष लाभ हैं?

क्योंकि यह जिस तरह से किया गया है, प्रोग्राम स्रोत कोड परंपरागत रूप से .tar.gz या .tar.bz2 के रूप में वितरित किए जाते हैं, क्योंकि फ़ाइल अनुमतियों को संशोधित करना, संशोधन समय, आदि प्रोग्रामिंग के लिए उपयोग किए जाने वाले विभिन्न उपकरणों (जैसे मेक) के लिए महत्वपूर्ण हैं।

अलग-अलग अभिलेखीय और संपीड़न कदम ने वर्षों से बहुत अच्छी तरह से काम किया है, इसका स्पष्ट लाभ है कि यह स्वतंत्र रूप से मिश्रण और अभिलेखीय और संपीड़न से मेल खाने में सक्षम है, और इसके नुकसान (एक 2-चरण संपीड़न प्रक्रिया) को आसानी से विकसित किया जा सकता है स्मार्ट टूल्स ( अधिकांश आधुनिक लिनक्स कम्प्रेशन प्रोग्राम सीधे .tar.gz या .tar.bz2, इंटरमीडिएट स्टेप को छिपाते हुए) को संपीड़ित करेगा।

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

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