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. Він показує лише прогрес у передачі, якого ви можете досягти чимось подібним (все одно це перша посилання в google):

pv input_file | gzip > compressed_file

Панель прогресу буде працювати швидко, і тоді вона чекатиме стиснення, яке вже неможливо помітити за допомогою pv.

Але ви можете зробити це навпаки і дивитися вихідний потік, бот тут ви не зможете побачити фактичний прогрес, оскільки pvне знаєте фактичного розміру стисненого файлу:

gzip input_file | pv > compressed_file

Найкраще, що я знайшов поки що, - це командний, навіть з обмеженням швидкості та стисненням каталогів:

$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
кларк

він є, але він не знає всього розміру стислого файлу, тому він просто сканує з боку в бік. Перший, мабуть, кращий.
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   
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.