समान रूप से फ़ाइलों को संपीड़ित करें


11

मुझे अक्सर फ़ाइलों को संपीड़ित करने की आवश्यकता होती है जो एक-दूसरे के समान होती हैं।

वर्तमान में मैं 7Zip का उपयोग करता हूं, जो अल्ट्रा सेटिंग्स के साथ 8 कोर का उपयोग करके लगभग 35 मिनट में 16GB फ़ाइल को 1.2GB तक कम कर देता है।

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

क्या एक विंडोज-आधारित संपीड़न टूल (7Zip एक विकल्प है जिसके बारे में मुझे जानकारी नहीं है, या एक अलग उपकरण) जो शब्दकोश को बचा सकता है और बाद की फ़ाइलों के लिए सहेजे गए शब्दकोश का पुन: उपयोग कर सकता है?

क्या एक सम्पीडन अनुपात बनाए रखने की समस्या से निपटने के लिए मेरे पास एक बेहतर तरीका है, जबकि काफी तेज गति से संपीड़ित करना?

जवाबों:


5

Lempel-Ziv-वेल्च (LZW) संपीड़न एल्गोरिथ्म स्वाभाविक कंप्यूटेशनल रूप से संवेदनशील, काम ही किया जा रहा है वास्तव में शब्दकोश कंप्यूटिंग के बहुमत के साथ है। यह सचमुच एलजेडडब्ल्यू कैसे काम करता है।

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


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


1
हफमैन और एक पूर्वनिर्धारित शब्दकोश के साथ, क्या सिर्फ एक पास की आवश्यकता होगी? क्या कोई ऑफ-द-शेल्फ हैफमैन आधारित उपकरण हैं जो सहेजे गए शब्दकोशों का समर्थन करते हैं?
एरिक जे।

@EricJ। हां, पूर्वनिर्धारित शब्दकोश के साथ यह एकल-पास एन्कोडिंग होगा। मुझे ऐसा कोई सॉफ्टवेयर ऑफ-हैंड नहीं पता है जो ऐसा कर सके, हालांकि मेरे पास व्यक्तिगत रूप से लिखे गए प्रोग्राम हैं जो ऐसा करते हैं। जब मैंने इसे आज़माया नहीं है, तो यह उपकरण ऐसा लगता है कि यह ऐसा कर सकता है। हालांकि, बस ध्यान दें कि (फिर से, LZW के विपरीत) एक हफ़मैन-एन्कोडेड बिटस्ट्रीम को डीकोड करने के लिए, आपको डेटा को डिकम्प्रेस करने के लिए मूल शब्दकोश की आवश्यकता है।
ब्रेकथ्रू

उस टूल की उम्र के आधार पर, मैं यह अनुमान लगा रहा हूं कि यह एकल-थ्रेडेड है। मुझे लगता है कि 8 के बजाय 1 कोर का उपयोग करने से किसी निश्चित शब्दकोश को कोई लाभ मिलेगा :-( दूसरे छोर पर उपलब्ध शब्दकोश मेरे परिदृश्य में संभव है (डेटा केंद्रों के बीच बड़ी फ़ाइलों को स्थानांतरित करना)।
एरिक जे।

2

DEFLATE एल्गोरिथम के विपरीत, 7-ज़िप का LZMA डिफ़ॉल्ट रूप से ठोस संपीड़न का उपयोग करता है, जो अंतर-फाइल अतिरेक का लाभ उठाता है। यह डिफ़ॉल्ट सेटिंग्स के साथ काम करेगा जब तक कि फाइलें काफी छोटी हों।

ठोस ब्लॉक आकार के लिए 2 जीबी की डिफ़ॉल्ट सेटिंग्स के साथ , एक 16 जीबी फ़ाइल वास्तव में 8 अलग-अलग विखंडू के रूप में संकुचित होती है।

जैसा कि @Breakthorugh ने पहले ही कहा था, शब्दकोश मक्खी पर उत्पन्न होता है। आप सॉलिड ब्लॉक साइज़ को सॉलिड (एक साथ सभी फाइल्स को कंप्रेस करना) और नॉन-सॉलिड (हर फाइल को अलग से कंप्रेस करना ) करके इस एम्पिरिकली वेरिफाई कर सकते हैं ।

सॉलिड ब्लॉक का आकार बढ़ने से वास्तव में धीमी गति से गिरावट आएगी, लेकिन इसके परिणामस्वरूप बेहतर संपीड़न अनुपात हो सकता है। उदाहरण के लिए, दो समान फ़ाइलों को संपीड़ित करने के परिणामस्वरूप गैर-ठोस संपीड़न के साथ लगभग दो बार एक संग्रह होगा।


1
मेरे मामले में, मैं एक ही समय में एक ही फाइल को अलग-अलग अवसरों पर संपीड़ित करता हूं। दिए गए पुरालेख में केवल हर एक 16GB-ish फ़ाइल है।
एरिक जे।

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

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