2012-11-09 21 views
7

मैं उस फ़ोल्डर की सामग्री को ज़िप करने की कोशिश कर रहा हूं जिसमें 4 बड़ी फ़ाइलें हैं, बहुत, बहुत समान हैं। तो मैं आकार को कम करने की उम्मीद करता हूं।ज़िप 0% deflated? कोई संपीड़न क्यों नहीं?

यहाँ आदेश मैं linux/फेडोरा पर उपयोग कर रहा हूँ है: तो फिर

adding: myfolder/ (stored 0%) 
adding: myfolder/Program1.exe (deflated 0%) 
adding: myfolder/Program2.exe (deflated 0%) 
adding: myfolder/Program3.exe (deflated 0%) 
adding: myfolder/Program4.exe (deflated 0%) 

मैं संग्रह है, जो लगभग अपने मूल रूप में एक ही आकार है मिलती है:

zip -9 myarchive.zip -r myfolder -P mypassword 

मैं प्रतिक्रिया मिल फ़ोल्डर।

ऐसा लगता है कि कोई संपीड़न नहीं हो रहा है। क्यूं कर?

+0

क्या होता है जब आप '-P mypassword' को छोड़ देते हैं? –

+2

सभी डेटा संपीड़ित नहीं किया जा सकता है। –

+0

यह वही है जब मैं opt -P mypassword छोड़ देता हूं। –

उत्तर

7

tar + gzip के विपरीत, zip प्रत्येक फ़ाइल के लिए एक नई संपीड़न तालिका का उपयोग करता है, तो भले ही चार फ़ाइलों समान थे, यह व्यक्तिगत रूप से प्रत्येक को संपीड़ित करने की कोशिश करेंगे।

तकनीकी तौर पर, tar भी प्रत्येक फ़ाइल देखता है लेकिन उस gzip के लिए एक लंबे समय के इनपुट में एक साथ उन्हें तार, इसलिए संपीड़न कदम एक बड़ा इनपुट जिसके कारण tar + gzip आमतौर पर zip तुलना में एक छोटे परिणाम पैदावार पर काम करता है।

सवाल यह है कि आपकी exe फ़ाइलों को संपीड़ित नहीं किया जा सकता है। exe फाइलों में आमतौर पर आसानी से संपीड़ित डेटा की बड़ी मात्रा होती है, इसलिए उन्हें कम से कम 30% तक कम करना चाहिए ("डिफ्लेट")। शायद फाइलें एन्क्रिप्टेड या obfuscated हैं; इन प्रक्रियाओं को परिणाम को संपीड़ित करने में कठिनाई होती है।

+0

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

2

कुछ फ़ाइलों को संपीड़ित नहीं किया जा सकता है, विशेष रूप से यदि उनके एंट्रॉपी उच्च हैं। ऐसा तब होता है जब बाइट्स का सांख्यिकीय वितरण भी होता है (उदाहरण के लिए जब बाइट 0 बाइट 2 के रूप में अक्सर बाइट 1 के रूप में दिखाई देता है ...)। यह पहले से संपीड़ित सामग्री के लिए होता है। कुछ वीडियो या ऑडियो प्रारूप उस श्रेणी में आते हैं।

+0

मुझे लगता है कि प्रत्येक फ़ाइल में एक उच्च एन्ट्रॉपी होती है, लेकिन वे बहुत समान हैं। दो दी गई फ़ाइलों के बीच शायद 1% से कम अंतर है। इसलिए पूरे फ़ोल्डर पर विचार करते समय बहुत सारी अनावश्यकता होती है। –

+0

और "0% डिफ्लेटेड" का क्या अर्थ है? मैं मूल पोस्ट में पूछना भूल गया। आपकी सहायता के लिए धन्यवाद. –

2

हारून सही है। Wikipedia के अनुसार, ZIP प्रारूप संग्रह से पहले संपीड़ित करता है, इसलिए विभिन्न फ़ाइलों के बीच समानता संपीड़न में मदद नहीं करती है।

क्या आप वास्तव में .exe फ़ाइलों को संपीड़ित करने का प्रयास कर रहे हैं? किसी भी तरह मुझे शक है कि यह आपकी वास्तविक फ़ाइल प्रकार है।

http://en.wikipedia.org/wiki/ZIP_(file_format)#Advantages_and_disadvantages देखें।

+0

आपके इनपुट और लिंक के लिए धन्यवाद। हां मेरी फाइलें स्वयं निकालने योग्य exe फ़ाइलें हैं (हारून को मेरा जवाब देखें)। आपके समय के लिए धन्यवाद! –

2

Deflated 0% का मतलब है कि यह संपीड़ित करने का प्रयास किया गया था, लेकिन प्रभावी रूप से कोई संपीड़न नहीं मिला। जैसा कि ध्यान दिया गया है, ज़िप प्रारूप विभिन्न प्रविष्टियों के बीच समानता का लाभ नहीं उठा सकता है। tar + gzip कर सकते हैं, लेकिन तब भी तभी जब समानताएं 32K बाइट्स से कम एक दूसरे से दूर हो जाती हैं। अन्य प्रारूप xz जैसे लंबी दूरी की समानताओं का फायदा उठा सकते हैं।

असम्पीडित निष्पादनयोग्य 50%, जिसका अर्थ है 30% तक सेक देना सामान्य बात है अपने निष्पादनयोग्य हैं कि या तो एक) UPX की तरह कुछ से संकुचित, ख) वे स्वयं निकालने संकुचित डेटा, जहां decompressor आगे संग्रहीत किया जाता है कर रहे हैं संपीड़ित डेटा के, सी) वे बहुत संकुचित डेटा के साथ बहुत कम निष्पादन योग्य हैं, या डी) वे ज्यादातर एन्क्रिप्टेड हैं।