pv (thanh tiến trình) và gzip


10

Tại sao điều này là không thể?

pv ${dest_file} | gzip -1

pv là một thanh tiến trình

lỗi

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%

Những công việc này

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

1
bạn đang cố gắng để đạt được điều gì? Bạn đã đọc làm tài liệu pvgziplệnh?
Jakuje

Câu trả lời:


24

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

thanh tiến trình không hoạt động vớigzip input_file | pv > compressed_file
clarkk

nó là, nhưng nó không biết toàn bộ kích thước của tệp nén nên nó chỉ quét từ bên này sang bên kia. Cái đầu tiên có lẽ tốt hơn.
Jakuje

Thanh tiến trình không chạy nhanh đối với tôi.
mikezter

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 :)
David Gardner

Cảm ơn vì tiền hỗ trợ! Bạn cũng có thể đạt được điều này với một cái gì đó như mysqldump ... | gzip | pv > output.sql.gz.
jevon

4

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

1

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   
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.