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コマンドを?
Jakuje

回答:


24

達成しようとしているのは、圧縮プロセスの進行状況バーを確認することです。ただし、を使用することはできませんpv。これは転送の進捗状況のみを表示します。これは次のようなもので達成できます(とにかく、それはグーグルの最初のリンクです):

pv input_file | gzip > compressed_file

進行状況バーは高速で実行され、圧縮を待機します。これは、を使用して監視することはできませんpv

しかし、これとは逆の方法で出力ストリームを見ることができます。ここpvでは、圧縮ファイルの実際のサイズがわからないため、実際の進行状況を確認することはできません。

gzip input_file | pv > compressed_file

これまでに見つけた最高のものは、ディレクトリのレート制限と圧縮を使用した場合でも、commandlinefuからのものです。

$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
clarkk '26

圧縮されたファイルの全体サイズはわからないため、横から横にスキャンするだけです。最初のものはおそらくより良いです。
Jakuje

進行状況バーが速く動作しません。
mikezter

gzip -c出力をstdoutに送信してに渡せるようにする必要がpvあります。そうしないと、送信されるデータがないため、進行状況バーは機能しませんpv :)
David Gardner

先端をありがとう!のようなものでこれを達成することもでき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   
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.