pv (प्रगति बार) और gzip


10

यह क्यों संभव नहीं है?

pv ${dest_file} | gzip -1

pv एक प्रगति पट्टी है

त्रुटि

gzip: compressed data not written to a terminal. Use -f to force compression.
For help, type: gzip -h
   0 B 0:00:00 [   0 B/s] [>                                   ]  0%

यह काम

pv ${file_in} | tar -Jxf - -C /outdir

1
आप क्या हासिल करने का प्रयास कर रहे हैं? क्या आपने डॉक्स ऑफ़ pvएंड gzipकमांड पढ़ा है ?
जकूज़ी

जवाबों:


24

आप क्या हासिल करने की कोशिश कर रहे हैं, संपीड़न प्रक्रिया की प्रगति पट्टी को देखना है। लेकिन इसका उपयोग संभव नहीं है pv। यह केवल स्थानांतरण प्रगति दिखाता है, जिसे आप इस तरह से प्राप्त कर सकते हैं (वैसे भी, यह Google की पहली कड़ी है):

pv input_file | gzip > compressed_file

प्रगति पट्टी तेजी से चलेगी, और फिर यह संपीड़न का इंतजार करेगी, जो अब उपयोग करने योग्य नहीं है pv

लेकिन आप यह कर सकते हैं कि दूसरे तरीके से आउटपुट स्ट्रीम देखें और देखें, यहाँ आप वास्तविक प्रगति pvनहीं देख पाएंगे, क्योंकि संपीड़ित फ़ाइल का वास्तविक आकार नहीं पता है:

gzip input_file | pv > compressed_file

अब तक का सबसे अच्छा मैंने पाया है जो कमांडलाइनफू से एक है, यहां तक ​​कि दर सीमित और निर्देशिका के संपीड़न के साथ:

$D=directory
tar pcf - $D | pv -s $(du -sb $D | awk '{print $1}') --rate-limit 500k | gzip > target.tar.gz

प्रगति बार के साथ काम नहीं कर रहा हैgzip input_file | pv > compressed_file
क्लार्क

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

प्रगति बार मेरे लिए तेजी से नहीं चलती है।
mikezter 19

1
gzip -cइसे पारित करने की अनुमति देने के लिए स्टडआउट को आउटपुट भेजने की आवश्यकता है pv, अन्यथा प्रगति बार काम नहीं करेगा क्योंकि कोई डेटा नहीं जा रहा है pv :)
डेविड गार्डनर

पारितोषिक के लिए धन्यवाद! आप भी इसे कुछ इस तरह से हासिल कर सकते हैं mysqldump ... | gzip | pv > output.sql.gz
jevon

4

हां, यह फ़ाइल की पंक्तियों का उपयोग करके थोड़े संभव है, बाइट्स से नहीं। आपको एक सटीक पर्याप्त प्रगति पट्टी मिलती है:

cat input_file | pv -ls $( wc -l input_file ) | gzip -c -- > compressed_file

1

प्रतिशत प्रगति प्राप्त करने के लिए आप 7z का उपयोग कर सकते हैं:

$ 7z a spaCy.tar.gz spaCy.tar 

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,8 CPUs Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz (906E9),ASM,AES-NI)

Open archive: spaCy.tar.gz
--
Path = spaCy.tar.gz
Type = gzip
Headers Size = 20

Scanning the drive:
1 file, 326451200 bytes (312 MiB)

Updating archive: spaCy.tar.gz

Items to compress: 1

 32% U spaCy.tar   
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.