pv (ilerleme çubuğu) ve gzip


10

Bu neden mümkün değil?

pv ${dest_file} | gzip -1

pv bir ilerleme çubuğu

hata

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%

Bu çalışıyor

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

1
ne elde etmeye çalışıyorsun? Docs pvve gzipcommand belgelerini okudunuz mu?
Jakuje

Yanıtlar:


24

Elde etmeye çalıştığınız şey sıkıştırma işleminin ilerleme çubuğunu görmek. Ancak kullanmak mümkün değildir pv. Sadece böyle bir şeyle elde edebileceğiniz transfer ilerlemesini gösterir (her neyse, google'daki ilk bağlantıdır ):

pv input_file | gzip > compressed_file

İlerleme çubuğu hızlı çalışacak ve daha sonra artık gözlemlenemeyen sıkıştırmayı bekleyecektir pv.

Ancak bunu başka bir şekilde yapabilir ve çıkış akışını izleyebilirsiniz, burada bot gerçek ilerlemeyi göremezsiniz, çünkü pvsıkıştırılmış dosyanın gerçek boyutunu bilmiyor:

gzip input_file | pv > compressed_file

Şimdiye kadar bulduğum en iyi , hız sınırlaması ve dizinlerin sıkıştırılması ile bile commandlinefu'dan biri :

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

ilerleme çubuğu çalışmıyorgzip input_file | pv > compressed_file
clarkk

öyle, ama sıkıştırılmış dosyanın tüm boyutunu bilmiyor, bu yüzden sadece bir taraftan diğerine tarar. İlki muhtemelen daha iyi.
Jakuje

İlerleme çubuğu benim için hızlı çalışmıyor.
mikezter

1
gzip -c, geçmesine izin vermek için stdout'a çıkış göndermek için gereklidir pv, aksi takdirde ilerleme çubuğu hiçbir veri olmayacağı için çalışmaz pv :)
David Gardner

Bahşiş için teşekkürler! Buna benzer bir şeyle de ulaşabilirsiniz mysqldump ... | gzip | pv > output.sql.gz.
jevon

4

Evet, baytları değil, dosyanın satırlarını kullanmak mümkündür. Yeterince doğru bir ilerleme çubuğu elde edersiniz:

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

1

Yüzde ilerleme elde etmek için bunun yerine 7z kullanabilirsiniz:

$ 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   
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.