2008-11-08 16 views
13

मान लें कि a.gz है, और b.gz।क्या कोई GZIP विलय है जो दो GZIP फ़ाइलों को विघटित किए बिना विलय करता है?

$ gzip_merge a.gz b.gz आउटपुट c.gz

मैं इस कार्यक्रम करना चाहते हैं। बेशक,

$ बिल्ली a.gz> b.gz c.gz

काम नहीं करता। चूंकि a.gz के अंतिम DEFLATE ब्लॉक में BFINAL है, और b.gz का GZIP शीर्षलेख है। (आरएफसी 1 9 51, आरएफसी 1 9 52 का संदर्भ लें) लेकिन यदि आप बीएफआईएनएएल को अनसेट करते हैं, तो दूसरे जीजेआईपी हेडर को फेंक दें और दूसरी जीजीआईपी फ़ाइल की बाइट सीमाओं के माध्यम से चलें, आप इसे मर्ज कर सकते हैं।

वास्तव में, मैंने इस मामले के लिए एक ओपन सोर्स प्रोग्राम लिखने का विचार किया, लेकिन इसे प्रकाशित करने के बारे में नहीं पता था। इसलिए मैंने जोएल से मेरा प्रोग्राम मैनेजर होने के लिए कहा, और मैं उसे अपनी व्याख्या और रक्षा के माध्यम से चला गया, वह अंत में समझ गया कि मैं क्या करना चाहता था, लेकिन कहा कि वह बहुत व्यस्त था। :(

बेशक

, मैं एक अपने आप को लिख सकता है और इसे प्रकाशित के लिए अपने रास्ते की कोशिश करो। लेकिन मैं अकेला ऐसा नहीं कर सकते क्योंकि मेरे दिन काम मेरे नियोक्ता की संपत्ति के अंतर्गत आता है।

वहाँ किसी भी स्वयंसेवकों है हम प्रोग्रामर (मुझे), प्रकाशक (आप) या प्रोग्रामर (आप), प्रकाशक (मुझे) के रूप में काम कर सकते हैं। मुझे केवल कुछ क्रेडिट चाहिए। मैंने एक बार आरएफसी 3320 में वर्णित यूनिवर्सल डिकंप्रेसर वर्चुअल मशीन को लागू किया। इसलिए मुझे पता है कि यह व्यवहार्य है ।

या, तुम मुझे उस प्रोग्राम को इंगित कर सकता है यह विलय 365 (दिन) के लिए एक लॉग फ़ाइलें Gzipped तरह लॉग फाइल के प्रबंधन के लिए बहुत उपयोगी हो सकता है;।।)

धन्यवाद।

+0

, * क्यों * यदि आप ऐसा करना चाहेगा? यदि आप सिर्फ एक फ़ाइल के रूप में कुछ प्रस्तुत करना चाहते हैं, तो क्यों न केवल इसे बंद करें? –

+1

यदि आपके पास एक एमवीसी फ्रेमवर्क है और हेडर टेम्पलेट, गतिशील-सामग्री टेम्पलेट और एक पाद लेख टेम्पलेट की डिलीवरी तेज करना चाहते हैं, तो आप संपीड़न का चयन करेंगे। यदि आप पहले से ही हेडर टेम्पलेट और फ़ूटर टेम्पलेट को संपीड़ित करते हैं, तो यह चीजों को तेज़ी से बढ़ा सकता है। – yogman

उत्तर

32

बेशक, बिल्ली a.gz b.gz> c.gz काम नहीं करता है।

दरअसल, यह ठीक काम करता है। मैंने अभी इसका परीक्षण किया। यह gzip मैन पेज में भी दस्तावेज (तरह) है।

Multiple compressed files can be concatenated. In this case, gunzip 
    will extract all members at once. For example: 

     gzip -c file1 > foo.gz 
     gzip -c file2 >> foo.gz 

    Then 

     gunzip -c foo 

    is equivalent to 

     cat file1 file2 
+1

ओह, यह एक आकर्षण की तरह काम करता है! धन्यवाद! मुझे लगता है कि यह सभी PerlIO :: gzip जैसे पर्ल कार्यान्वयन के साथ काम करता है। – yogman

+0

फ़ाइलों को बनाने के लिए, मुझे कोई समस्या नहीं होगी। उन्हें पढ़ने के लिए, सबसे बुरे मामले में आप एक लूप या शेल आउट zcat/gunzip का उपयोग कर सकते हैं। – Glomek

4

तुम भी किए जा सकेंगे:

zcat a.gz b.gz > c.txt && gzip c.txt 

रूप में लंबे समय के लिए अपने लिनक्स/यूनिक्स वितरण zcat में बनाया गया है के रूप में है, जो उनमें से ज्यादातर (और आप जो कि नहीं है के लिए इसे स्थापित कर सकते हैं।)

वैकल्पिक रूप से:

zcat a.gz b.gz | gzip -c > c.txt.gz 
बस जिज्ञासा से बाहर
संबंधित मुद्दे