GUI के साथ बनाई गई ज़िप फ़ाइलों में शेल में बनाई गई ज़िप फ़ाइलों की तुलना में अधिक बाइट्स होते हैं


15

मैंने एक ही डायरेक्टरी की दो ज़िप फाइल बनाई । एक जीयूआई के साथ, दूसरा इसके साथ:

$ zip -r alpha_cmd.zip Alpha

अल्फा निर्देशिका 164 आइटम के साथ 33.640 MB है।

GUI द्वारा बनाई गई ज़िप फ़ाइल कमांड लाइन पर बनाई गई ज़िप फ़ाइल से 2,100 बाइट्स बड़ी है।

GUI के साथ जिप फाइल क्यों बनाई जाती है?

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


एक के पास अदृश्य फाइलें हो सकती हैं, दूसरे में नहीं?
टेटसुजिन

इस SU उत्तर कोशिश सेditto -ck --rsrc --sequesterRsrc --keepParent folder folder.zip
user151019

@ मर्क मैं जवाब देना भूल गया। यह "डिट्टो" कमांड फाइंडर के समान सटीक फ़ाइल बनाता है। और ditto / zip / "फाइंडर ज़िप" फाइलें सभी क्रॉस प्लेटफॉर्म हैं। आपके समय और कोशिश के लिए धन्यवाद।
डेविड

जवाबों:


20

खोजक से Zipping मैक पर अदृश्य __MACOSX एक फ़ोल्डर जोड़ता है, जिसमें कस्टम आइकन और जैसे ओएस एक्स संसाधन कांटे शामिल हैं। से विकिपीडिया :

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


6
मामूली सुधार: यह सिर्फ संसाधन कांटे नहीं है, यह सभी प्रकार की फ़ाइल मेटाडेटा है जो ज़िप प्रारूप को मूल रूप से नहीं संभालती है, AppleDouble प्रारूप में एन्कोडेड है । इसमें स्पॉटलाइट कमेंट, टैग, फाइंडर फ्लैग, संगरोध डेटा आदि के साथ-साथ संसाधन कांटे शामिल होंगे।
गॉर्डन डेविसन

और मैं सोच रहा था कि ज्यादातर ज़िप में "__MACOSX" फ़ोल्डर क्या था ... जितना आप जानते हैं, एह?
एवेन्यू

एक अन्य संदर्भ जो उत्तर को प्रकाशित कर सकता है: stackoverflow.com/questions/107903/…
DA विंसेंट

4

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

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

उदाहरण के लिए, 7-ज़िप आमतौर पर .zipअन्य ज़िप कार्यक्रमों की तुलना में छोटी फाइलें बनाता है । (और नहीं, मैं अपने स्वयं के .7zफ़ाइल प्रारूप के बारे में बात नहीं कर रहा हूं । इसमें एक बेहतर सादा-ज़िप कंप्रेसर भी है।)

zipcmp एक cmdline प्रोग्राम है जो ZIP फाइलों की तुलना कर सकता है। यह सिर्फ ज़िप निर्देशिका की तुलना करने के लिए चूक करता है, यह जांचने के लिए कि सभी फाइलें एक ही नाम, आकार और सीआरसी हैं । यदि यह मामला है, तो दोनों ज़िप फाइलें एक ही सामग्री के लिए लगभग निश्चित हैं, लेकिन बस अलग तरीके से संपीड़ित (यदि संकुचित आकार भिन्न होता है।) जब तक कि ज़िप फाइलें क्षतिग्रस्त नहीं होती हैं, निश्चित रूप से। unzip -t foo.zipविघटन त्रुटियों, गैर-मिलान सीआरसी, आदि के लिए एक ज़िप फ़ाइल का परीक्षण करने के लिए उपयोग करें ।


क्या __MACOSX फ़ोल्डर CRC गणना को प्रभावित नहीं करेगा?
कैंट

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

@PeterCordes तथ्य यह है कि विभिन्न ज़िप कार्यान्वयन विभिन्न फ़ाइल आकारों का उत्पादन कर सकते हैं वास्तव में मेरा ध्यान आकर्षित किया है। मुझे पता था कि शेल ने "/ usr / बिन / ज़िप" निष्पादित किया है। लेकिन जब से फ़ाइंडर ने मुझे एक अलग फ़ाइल आकार दिया, मैंने सोचा कि फ़ाइंडर ने एक पूरी तरह से अलग निष्पादन योग्य का उपयोग किया (और यह मेरे लिए परेशान था)। अगर मुझे पता था कि कैसे रूट करना है और कुछ साहस करना है, तो एक परीक्षण के रूप में मैं "/ usr / bin / zip" को "/ tmp" पर ले जाऊंगा, और फिर एक खोजक ज़िप (और यह बेहतर एक त्रुटि जारी करता है) की कोशिश करूँगा। लेकिन, मैं काम करने के लिए है और अपने मैक को अस्थिर करने का जोखिम नहीं उठा सकता!
david

/usr/bin/zipएक अलग संस्करण के साथ अस्थायी रूप से बदलने का सबसे सुरक्षित तरीका होगा ln /usr/bin/zip /usr/bin/zip.standard; mv new_zip /usr/bin/zip। इस तरह, आपके पास हमेशा ए है /usr/bin/zip, क्योंकि आप सिस्टम कार्यान्वयन को परमाणु रूप से प्रतिस्थापित करते हैं। इसके अलावा, पुराने संस्करण को केवल नाम दिया गया है, /tmpजिसे स्थानांतरित नहीं किया गया है (जो संभवतः एक अलग फाइल सिस्टम पर हो सकता है।) इसे निष्क्रिय करने के लिए, मैं इसे बस नाम बदल zip.disabदूंगा, अगर फाइंडर टूट जाता है, तो इसे वापस नाम दें। लेकिन जिप-निर्माण पुस्तकालय के कार्य आम हैं। खोजक लगभग निश्चित रूप से कांटा / निष्पादन नहीं करता है /usr/bin/zip
पीटर कॉर्डेस

@PeterCordes मुझे निष्पादन योग्य के बजाय पुस्तकालयों को कॉल करने के बारे में मिलता है। लेकिन, निष्पादन योग्य "/ usr / bin / ditto" होता, न कि "/ usr / bin / zip" वैसे भी। इस मंच से सहायता महान है। आपके समय और कोशिश के लिए धन्यवाद।
डेविड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.