pv (barre de progression) et gzip


10

Pourquoi n'est-ce pas possible?

pv ${dest_file} | gzip -1

pv est une barre de progression

Erreur

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%

Cela marche

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

1
qu'essayez-vous d'accomplir? Avez-vous lu do docs of pvand gzipcommand?
Jakuje

Réponses:


24

Ce que vous essayez de réaliser, c'est de voir la barre de progression du processus de compression. Mais ce n'est pas possible d'utiliser pv. Il ne montre que la progression du transfert, ce que vous pouvez réaliser par quelque chose comme ça (de toute façon, c'est le premier lien dans Google):

pv input_file | gzip > compressed_file

La barre de progression s'exécutera rapidement, puis attendra la compression, qui n'est plus observable à l'aide pv.

Mais vous pouvez faire cela dans l'autre sens et regarder le flux de sortie, bot ici, vous ne pourrez pas voir la progression réelle, car pvne connaît pas la taille réelle du fichier compressé:

gzip input_file | pv > compressed_file

Le meilleur que j'ai trouvé jusqu'à présent est celui de commandlinefu même avec la limitation de débit et la compression des répertoires:

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

la barre de progression ne fonctionne pasgzip input_file | pv > compressed_file
clarkk

c'est le cas, mais il ne connaît pas toute la taille du fichier compressé, il scanne donc d'un côté à l'autre. Le premier est probablement meilleur.
Jakuje

La barre de progression ne fonctionne pas rapidement pour moi.
mikezter

gzip -cest requis pour envoyer la sortie à stdout pour permettre sa transmission pv, sinon la barre de progression ne fonctionnera pas car il n'y a pas de données pv :)
David Gardner

Merci pour le conseil! Vous pouvez également y parvenir avec quelque chose comme mysqldump ... | gzip | pv > output.sql.gz.
jevon

4

Oui, c'est un peu possible en utilisant les lignes du fichier, pas les octets. Vous obtenez une barre de progression suffisamment précise:

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

1

Vous pouvez utiliser 7z à la place pour obtenir une progression en pourcentage:

$ 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   
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.