मैं वास्तव में इसे decompressing बिना gzip फ़ाइल के असम्पीडित आकार कैसे प्राप्त कर सकता हूं?


25

कृपया मेरा OS विवरण देखें:

$ uname -a
AIX xxyy 1 6 000145364C00

मैंने gzip संग्रह में फ़ाइल का आकार प्राप्त करने के लिए निम्नलिखित कमांड की कोशिश की है:

$ gzip -l mycontent.DAT.Gz
compressed  uncompr.   ratio   uncompressed_name
-1223644243 1751372002 -75.3%  mycontent.DAT.Gz

यकीन नहीं है कि इस से अनज़िप्ड आकार की व्याख्या कैसे करें। संपीड़ित फ़ाइल आकार 4 जीबी के करीब।

इसलिए, मैंने सही डेटा कैप्चर करने के लिए इस विकल्प की कोशिश की:

$ zcat mycontent.DAT.Gz | wc -c

यह मुझे यह त्रुटि देता है:

mycontent.DAT.Gz.Z:A file or directory in the path name does not exist.
0

क्या आप कृपया मुझे बता सकते हैं कि स्रोत फ़ाइल को डिकम्प्रेस किए बिना शेल स्क्रिप्ट से इस मान को कैसे कैप्चर किया जाए?


क्या आप संग्रह की अखंडता के बारे में निश्चित हैं? यह अपने स्वयं के संकुचित आकार को ~ 1.7G के रूप में रिपोर्ट करता है। अगर यह वास्तव में है ~ 4 जीबी मुझे लगता है कि एक समस्या है।
टेराडॉन

जवाबों:


26

प्रश्न शीर्षक का उत्तर देने के लिए:

मैं वास्तव में इसे decompressing बिना gzip फ़ाइल के असम्पीडित आकार कैसे प्राप्त कर सकता हूं?

जैसा कि आप स्पष्ट रूप से जानते हैं, विकल्प -l( --list) आमतौर पर असम्पीडित आकार दिखा रहा है।
यह जो दिखाता है वह डेटा से गणना नहीं है, लेकिन शीर्षलेख में संपीड़ित फ़ाइल के भाग के रूप में संग्रहीत किया गया था।

आपके मामले में, -lविकल्प किसी कारण से काम नहीं करता है।
लेकिन कच्चे संपीड़ित डेटा से असम्पीडित आकार को 'मापना' संभव नहीं है - संपीड़ित डेटा में किसी और चीज के बारे में बस कोई जानकारी नहीं है - जो आश्चर्य की बात नहीं है, क्योंकि संपीड़न के बिंदु को कुछ भी छोड़ने की ज़रूरत नहीं है।

आपको डिस्क पर असम्पीडित डेटा को संग्रहीत करने की आवश्यकता नहीं है: zcat file.gz | wc -cसही दृष्टिकोण है - लेकिन जैसा कि @OleTange ने उत्तर दिया है, zcatऐसा लगता है कि आप इसमें से नहीं हैं gzip
वैकल्पिक उपयोग कर रहा है gzipविकल्प -d( --decompress) और -c( --to-stdout), के साथ संयुक्त wcविकल्प -c( --bytes):

gzip -dc file.gz | wc -c

13
-l: विकल्प 4GB से भी बड़ा फ़ाइलों के लिए एक बग है bugs.debian.org/cgi-bin/bugreport.cgi?bug=149775
Flimm

6

आपका zcatGNU zcat नहीं है, लेकिन सेक से। प्रयत्न:

gzcat mycontent.DAT.Gz | wc -c
gzip -dc mycontent.DAT.Gz | wc -c

यह स्रोत फ़ाइल को विघटित करता है। शायद यह वही है जो ओपी चाहता है, लेकिन यह सवाल का जवाब नहीं है।
मार्को

आह, यह बताता है कि क्यों यह .Z
हेन्नेस

0

gzip -l ने मेरे लिए काम नहीं किया, सिर्फ git -1 ... लेकिन यह किया:

unzip -l file.zip

0

मुझे वेब में सब कुछ मिल रहा है, और इस समस्या को हल न करें जब फ़ाइल का आकार 4GB से बड़ा हो।

मेरा समाधान यह है :

[oracle @ base tmp] $ timeout --signal = SIGINT 1s tar -tvf oracle.20180303.030001.dmp.tar.gz
    -rw-r - r-- oracle / oinstall 111828 2018-03-03 03:05 oracle.20180303.0.110101.log
    -rw-r ----- oracle / oinstall 6666911744 2018-03-03 03:05 oracle.20180303.030001.dmp

gz फ़ाइल से कुल आकार पाने के लिए:

] grep -o '[[: अंक:]] *' | awk '{sum + = $ 1} END {प्रिंट योग}'
    6667023572

1
यह एक बेहतर उत्तर होगा यदि आपने समझाया कि यह केवल टारबॉल के लिए काम करता है और आपने इसे साफ कर दिया (टाइमआउट आवश्यक नहीं है, और न ही grep है)।
kbolino
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.