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
คุณพยายามทำอะไรให้สำเร็จ คุณอ่าน docs pvและgzipcommand แล้วหรือยัง?
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จำเป็นต้องมีการส่งออกไปยัง stdout จะให้มันถูกส่งผ่านไป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.