pv (barra di avanzamento) e gzip


10

Perché questo non è possibile?

pv ${dest_file} | gzip -1

pv è una barra di avanzamento

errore

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%

Questo funziona

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

1
cosa stai cercando di ottenere? Hai letto doc pve gzipcomando?
Jakuje,

Risposte:


24

Quello che stai cercando di ottenere è vedere la barra di avanzamento del processo di compressione. Ma non è possibile utilizzare pv. Mostra solo l'avanzamento del trasferimento, che puoi ottenere con qualcosa del genere (comunque, è il primo link in google):

pv input_file | gzip > compressed_file

La barra di avanzamento verrà eseguita rapidamente, quindi attenderà la compressione, che non è più osservabile utilizzando pv.

Ma puoi farlo diversamente e guardare il flusso di output, qui il bot non sarà in grado di vedere l'avanzamento effettivo, perché pvnon conosce la dimensione effettiva del file compresso:

gzip input_file | pv > compressed_file

Il migliore che ho trovato finora è quello di commandlinefu anche con limitazione della velocità e compressione delle directory:

$D=directory
tar pcf - $D | pv -s $(du -sb $D | awk '{print $1}') --rate-limit 500k | gzip > target.tar.gz

la barra di avanzamento non funziona congzip input_file | pv > compressed_file
clarkk il

lo è, ma non conosce l'intera dimensione del file compresso, quindi scansiona da un lato all'altro. Il primo è probabilmente migliore.
Jakuje,

La barra di avanzamento non funziona velocemente per me.
mikezter,

gzip -cè necessario inviare l'output allo stdout per consentirne il passaggio pv, altrimenti la barra di avanzamento non funzionerà in quanto non ci sono dati che vanno a pv :)
David Gardner,

Grazie per il consiglio! Puoi anche farlo con qualcosa del genere mysqldump ... | gzip | pv > output.sql.gz.
jevon

4

Sì, è possibile usare le righe del file, non i byte. Ottieni una barra di avanzamento abbastanza accurata:

cat input_file | pv -ls $( wc -l input_file ) | gzip -c -- > compressed_file

1

Puoi usare 7z invece per ottenere un progresso percentuale:

$ 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   
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.