मैं सबसे अच्छा, मानक ज़िप संपीड़न कैसे प्राप्त कर सकता हूं?


20

मुझे परवाह नहीं है कि इसे संपीड़ित करने में कितना समय लगता है, सभी मैं प्राप्त करना चाहता हूं दो चीजें हैं:

  • पूर्ण सर्वोत्तम संभव संपीड़न अनुपात
  • मानक पाठकों के साथ संगतता, जैसे विंडोज और विनज़िप

तो 7-ज़िप जैसे सुझावों का अधिक उपयोग नहीं होगा, जब तक कि 7-ज़िप मानक ज़िप संपीड़न में थोड़ा बेहतर न हो (जैसा कि यह बहुत अच्छा .7z प्रारूप का उपयोग करने का विरोध किया गया है)।

आदर्श रूप में मैं देख रहा हूँ:

  • सॉफ्टवेयर के एक टुकड़े की सिफारिश
  • उस सॉफ़्टवेयर के लिए विशेष सेटिंग्स जो पूर्ण सर्वोत्तम संपीड़न को सक्षम करती हैं
  • कुछ ऐसा जो मुफ्त है

याद रखें, सेक करने में कितना समय लगता है यह कोई मुद्दा नहीं है!

एक आखिरी चीज - कुछ फाइलें विभिन्न सेटिंग्स के साथ बेहतर संकुचित हो सकती हैं, जैसे "वर्ड साइज" या "डिक्शनरी साइज" - क्या कोई ऐसा टूल है जो फाइलों का विश्लेषण कर सकता है और सबसे उपयुक्त कंप्रेशन रेशियो चुन सकता है, या WinZip, 7-zip करता है। आदि पहले से ही है?

जवाबों:


20

यदि आप Windows XP में निर्मित जिप फोल्डर्स क्षमता के साथ अनुकूलता चाहते हैं, तो आप डीफ़्लैट संपीड़न से चिपके रहते हैं। मुझे नहीं लगता कि आप यहां तक ​​कि DefZate64, बहुत कम उन्नत संपीड़न विधियों (जैसे LZMA, PPMD, WavPack, Bzip2, आदि) का उपयोग कर सकते हैं winZip और PowerArchiver के हाल के संस्करणों में उपलब्ध हैं। PowerArchiver उन फ़ाइलों के लिए .zipx एक्सटेंशन का उपयोग करने के लिए कम से कम चूक करता है - मुझे नहीं लगता कि WinZip अभी तक ऐसा कर रहा है।

सबसे छोटी संभव ज़िप फ़ाइल जो 7-ज़िप बना सकती है, उसे निम्न कमांड लाइन के साथ किया जा सकता है:

7za a -mm=Deflate -mfb=258 -mpass=15 -r C:\Path\To\Archive.zip C:\Path\To\Files\*

विशेष रूप से ध्यान दें: 7-ज़िप के वाइल्डकार्ड पार्सर सिस्टम पर अन्य लोगों के समान नहीं हैं। *.*एक्सटेंशन वाली सभी फ़ाइलों का अर्थ है। सभी फ़ाइलों का *मतलब है ।

इस तरह से .zip फाइलें बनाना (और, संभवतः, अन्य उपकरणों का उपयोग करके जो छोटे "मानक" .zip फाइलें बनाने का प्रयास करते हैं) वास्तव में, वास्तव में धीमा है। आप सबसे अधिक समय और स्थान बचाने के लिए 7-ज़िप या WinRar का उपयोग करके स्वयं निकालने अभिलेखागार बनाने के लिए होगा।


मेरी 7z त्रुटि "-m0" पर होगी लेकिन मुझे लगता है कि "-एमएम" हाल के संस्करणों के साथ भी ऐसा ही करता है। मैंने यह भी देखा कि, मेरे मामले में (JPG फ़ाइलों को संपीड़ित करना), "-mx9" के बजाय "-mfb = 258 -mpass = 15" का उपयोग करने से परिणाम औसतन by 15 बाइट्स से यादृच्छिक रूप से भिन्न होगा (अपवादों के साथ ± 50 के दशक में जाने वाला) )
मार्क जेरोनिमस

1
@ ज़ोम-बी: आप सही हैं, -mm=इसके बजाय होना चाहिए था -m0=। अभिलेखागार -m0=पर प्रयोग किया जाता है .7z। इसके अलावा, 7-ज़िप मैनुअल निर्दिष्ट करता है कि -mx=9ज़िप अभिलेखागार के लिए बराबर है -mfb=128 -mpass=10। मैंने देखा है कि -mfb=258 -mpass=15हमेशा की तुलना में बहुत धीमी है -mx=9और अक्सर बहुत अधिक स्थान नहीं बचा है (या कभी-कभी कुछ बाइट्स का अधिक उपयोग करता है)। हर बार एक समय में यह अंतरिक्ष के एक सभ्य बिट बचाता है।
दोपहर

पिछली टिप्पणी में "बहुत" धीमी 3 गुना से अधिक धीमी अनुवाद करता है। अंतरिक्ष के लिए, धीमा विकल्प लगभग संग्रह देता है। तेजी की तुलना में 99.885% आकार (यानी -mx = 9 बिना -mpass = 15) संस्करण। तो, 3x अधिक समय के लिए कोई केवल 0.115% स्थान बचा सकता है। इसलिए, जब तक कि 0.115% लाभ बहुत महत्वपूर्ण न हो, -mx = 9 के बजाय -mass = 15 पर जाएं।
टीवी

8

सबसे अच्छा अपस्फीति (मानक ज़िप द्वारा उपयोग किया जाने वाला संपीड़न प्रारूप) कम्प्रेसर जो मुझे पता है:

Zopfli ( मूल से संग्रहीत ) का उपयोग करके डेटा संपीड़न से फ़ाइल संपीड़ित फ़ाइल आकार की तुलना करें :

╔══════════════╦═══════════╦═════════╦═════════╦═════════╦═════════╗
║              ║Corpus size║gzip ­-9  ║7-­zip    ║kzip     ║Zopfli   ║
╠══════════════╬═══════════╬═════════╬═════════╬═════════╬═════════╣
║Alexa-top-10k ║  693108837║128498665║125599259║125163521║123755118║
║Calgary       ║    3141622║  1017624║   980674║   978993║   974579║
║Canterbury    ║    2818976║   730732║   675163║   674321║   669933║
║enwik8        ║  100000000║ 36445248║ 35102976║ 35025767║ 34995756║
╚══════════════╩═══════════╩═════════╩═════════╩═════════╩═════════╝

यहां तक ​​कि यादृच्छिक PNGs Zopfli पर pngout की तुलना में 0.5% बेहतर था । Zopfli उन सभी में सबसे छोटा बनाता है।


मैं मूल ज़िप आदेश के साथ फ़ाइलों के एक सेट को संपीड़ित करने के लिए Zopfli का उपयोग कैसे कर सकता हूं?
पैनायोटिस

1
@Panayotis zopfli zip के लिए एक Google खोज github.com/google/zopfli/issues/29 की ओर जाता है जो बताता है कि कैसे zopfli परियोजना सीधे ज़िप फ़ाइलों को नहीं करेगी, लेकिन इसमें AdvancePP के advzip जैसे उपकरणों की चर्चा शामिल है जो एक बैकएंड के रूप में zopfli का उपयोग कर सकते हैं ।
आनन

5

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

kzip /r <filename of ZIP file> *.*

जैसा कि रोआल्ड सुझाव देता है, उस निर्देशिका को शामिल करना सबसे अच्छा है जहां kzip.exeआपके सिस्टम के PATH वैरिएबल में रहता है ताकि इसे आर्काइव या ज़िप फ़ाइल में शामिल न किया जा सके।

अब तक, मैंने पाया है कि KZIP के साथ बनाई गई ज़िप फाइलें अन्य जिप कम्प्रेस्सिंग प्रोग्राम्स द्वारा बनाई गई की तुलना में लगभग 10-20% छोटी हैं। वे अन्य संग्रह सॉफ़्टवेयर (Winzip, WinRAR, 7-zip, आदि) और विंडोज द्वारा पूरी तरह से खुले हैं।


5
उस निर्देशिका में नहीं, बल्कि आपके सिस्टम के पथ पर कहीं और क्या है?
आरडी

1
मेरे पास एक ही आवश्यकता थी - विंडोज मानक ज़िप कार्यक्षमता द्वारा समर्थित होना चाहिए। KZIP वह है जो मैंने उपयोग किया है क्योंकि यह एक विजेता की तरह काम करता है। अपने वातावरण में सबसे अच्छा काम करता है का एक अच्छा विचार प्राप्त करने के लिए / s / b / n विकल्पों के साथ खेलना सुनिश्चित करें।
गोयूइक्स

बेशक! पथ चर। मैंने अपना उत्तर संपादित कर दिया है। धन्यवाद रोनाल्ड!
इस्केक

या बस निष्पादन योग्य के पथ के साथ कमांड को उपसर्ग करें
micsthepick

1

सुपर सरल स्क्रिप्ट .zip filetype और एक Deflate64 संपीड़न विधि का उपयोग करके एक फ़ोल्डर में सभी फ़ोल्डर को अलग-अलग ज़िप फ़ाइलों में संपीड़ित करने के लिए।

@echo off
for /d %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a "%%X.zip" "%%X\" -tzip -mx9 -mm=Deflate64

-1

यह अधिक मेमोरी है कि आपको यह काम करते समय कंप्रेसर को कितनी मेमोरी उपलब्ध करनी है। 7-ज़िप का उपयोग करना, मैं .Zip प्रारूप, अल्ट्रा संपीड़न, LZMA संपीड़न विधि और डिफ़ॉल्ट 64MB शब्दकोश आकार के साथ एक संग्रह पैक करूँगा। यदि आपके पास मेमोरी उपलब्ध है, तो डिक्शनरी का आकार बढ़ाएँ, हालाँकि ध्यान दें कि 64MB शब्दकोश के साथ सेक करने के लिए आपको लगभग 3GB मेमोरी की आवश्यकता होगी। एक बड़े शब्दकोश का उपयोग करके 7-ज़िप को अधिक मैचों के लिए शिकार करने की अनुमति दें और बेहतर संपीड़न प्रदान करें यदि आप मेमोरी का खर्च उठा सकते हैं। LZMA दोनों gzip (deflate / deflate64, मुझे लगता है) और bzip2 को सामग्री के आधार पर 10-12% तक औसतन 5% तक हरा देता है।

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


3
मुझे LZMA से कुछ परेशानी हो रही है - उदाहरण के लिए, मैं 7zip में जो भी सेटिंग्स की कोशिश करता हूं, वह इस ज़िप में टेक्स्ट फ़ाइल ( joshz.com/Bad.zip ) डीकोम्प्रेसर में निर्मित विंडोज के उपयोग से डिकम्प्रेस नहीं होगी (मैं विंडोज का उपयोग कर रहा हूं) 7)।
जोश कोमले ने

(जिप फाइल जिसे मैंने संदर्भ के लिए त्रुटिपूर्ण फ़ाइल से जोड़ा था, लेकिन LZMA के साथ संपीड़ित नहीं किया गया था)
जोश कोमले

@joshcomley मैं अंतर्निहित विंडोज़ फ़ोल्डर संपीड़न उपकरण के लिए समर्थित संपीड़न योजनाओं की एक सूची खोजने में असमर्थ था। LZMA के लिए विकिपीडिया के अनुसार, यह है , WinZip और विभिन्न प्लेटफार्मों पर कई अन्य संपीड़न उपकरण द्वारा समर्थित इसलिए मैं इसके साथ जाने के लिए चुने गए। * .जीप सिर्फ एक कंटेनर प्रारूप है, इसलिए मुझे नहीं पता कि क्या कोई "आधिकारिक" संपीड़न है जो उपकरण समर्थन करेंगे, या बस सामान्य वाले (समान कैसे * .AVI लगभग किसी भी प्रकार के वीडियो को पकड़ सकते हैं)। यदि आपको यह सुनिश्चित करने की आवश्यकता है कि यह हमेशा काम करता है, तो इसे स्व-निष्कर्षण के रूप में पैक करें।
डारथ Android

-3

यदि आप विंडोज वातावरण के लिए सबसे अच्छा कंप्रेसर की तलाश कर रहे हैं , तो मैं आपको 7-ज़िप LZMA 'संपीड़न विधि' या 7-ज़िप * .7z SFX अभिलेखागार का उपयोग करने के लिए * .zip प्रारूप की कोशिश करने की सलाह दूंगा। SFX अभिलेखागार में लगभग 130 kb से अधिक .7z संपीड़ित फ़ाइलों का ओवरहेड है और जब .7z और .zip के बीच के आकार का अंतर बड़ा है, तो उपयोग करने लायक हैं।

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

एक टेस्ट मैंने 2 फाइलों के साथ किया -

  • ऑटोहोटी- H.exe (946 kb)
  • AutoHotkey.dll (1003 kb)
  • कुल आकार - 1955 केबी

  • 7-जिप .zip - 794 kb
  • 7-जिप .7z एसएफएक्स - 594 केबी
  • NSIS LZMA ठोस संपीड़न - 552 kb
  • 7-जिप .7z - 461 kb

जैसा कि # 4 वह नहीं है जो आप चाहते हैं, स्पष्ट विजेता NSIS है, लेकिन व्यावहारिक कारणों से, मैं सुझाव देता हूं कि .zip संकुचित है, आकार 500 kbs से कम है और बड़ा होने पर, exe बनाने वाले उपकरण जैसे कि 7-ज़िप SFX के साथ जाएं या NSIS (7-ज़िप विशेष रूप से इसे स्थापित करना आसान है)।


2
प्रश्न में आवश्यकताओं को विशेष रूप से 7z और अन्य स्वरूपों को छोड़कर।
बॉब

@ याकूब ने कहा कि एक कंप्रेसर जो विंडोज के साथ संगत है और एक्स (मेरा # 2 और # 3) है। 7z केवल # 4 है जो मैंने बताया है।
अवी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.