Câu trả lời:
Những gì bạn đang cố gắng để đạt được là để xem thanh tiến trình của quá trình nén. Nhưng nó không thể sử dụng pv. Nó chỉ hiển thị tiến trình chuyển mà bạn có thể đạt được bằng cách như thế này (dù sao, đây là liên kết đầu tiên trong google):
pv input_file | gzip > compressed_file
Thanh tiến trình sẽ chạy nhanh, và sau đó nó sẽ chờ nén, không thể quan sát được nữa bằng cách sử dụng pv.
Nhưng bạn có thể làm theo cách khác và xem luồng đầu ra, bot ở đây bạn sẽ không thể thấy tiến trình thực tế, vì pvkhông biết kích thước thực của tệp nén:
gzip input_file | pv > compressed_file
Điều tốt nhất tôi tìm thấy cho đến nay là một từ Commandlinefu ngay cả với việc giới hạn tốc độ và nén các thư mục:
$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
gzip -cđược yêu cầu gửi đầu ra tới thiết bị xuất chuẩn để cho phép nó được chuyển đến pv, nếu không thanh tiến trình sẽ không hoạt động vì không có dữ liệu nào pv :)
mysqldump ... | gzip | pv > output.sql.gz.
Có, có thể sử dụng các dòng của tệp chứ không phải byte. Bạn nhận được một thanh tiến trình đủ chính xác:
cat input_file | pv -ls $( wc -l input_file ) | gzip -c -- > compressed_file
Bạn có thể sử dụng 7z thay thế để có được phần trăm tiến bộ:
$ 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
pvvàgziplệnh?