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
당신은 무엇을 달성하려고합니까? 당신은 문서 pvgzip명령 을 읽었습니까 ?
Jakuje

답변:


24

달성하려는 것은 압축 프로세스의 진행률 표시 줄을 보는 것입니다. 그러나를 사용하는 것은 불가능합니다 pv. 전송 진행률 만 표시하며 다음과 같은 방법으로 달성 할 수 있습니다 (어쨌든 Google 의 첫 번째 링크 임).

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

압축 파일의 전체 크기를 알 수 없으므로 좌우로 스캔하기 만합니다. 첫 번째는 아마도 더 낫습니다.
Jakuje

진행률 표시 줄이 빠르지 않습니다.
mikezter

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   
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.