GNU/Linux >> Tutoriels Linux >  >> Linux

Programme de compression affichant le taux de compression en direct ?

Certains programmes de compression peuvent afficher des informations (comme le taux de compression ou les totaux de temps et de taille) lors de l'exécution de la tâche, comme xz -v :

--- %   2,580.2 KiB / 6,552.0 KiB = 0.394   1.2 MiB/s       0:05

Lors de la compression d'un gros fichier, j'aimerais connaître le taux de compression à mi-tâche, afin de pouvoir arrêter le processus si le taux de compression est faible et le laisser non compressé.

Existe-t-il d'autres programmes avec cette fonctionnalité ? (xz a un taux de compression élevé mais est lent)

Réponse acceptée :

La manière générique de le faire est d'utiliser quelque chose comme pv pour surveiller à la fois la taille d'entrée et de sortie du programme de compression. Par exemple :

$ pv -cpterba -N in /dev/urandom | gzip | pv -cpterba -N out > /dev/null 
      out:  956MiB 0:00:42 [23.1MiB/s] [22.8MiB/s] [                           <=>        ]
       in:  956MiB 0:00:42 [23.1MiB/s] [22.8MiB/s] [                           <=>        ]

Il est assez facile de voir ci-dessus que la taille de sortie est la même que la taille d'entrée, comme prévu lors de la tentative de compression de données aléatoires.

Si à la place on essaie sur un fichier qui se comprime vraiment bien :

$ pv -cpterba -N in /dev/zero | gzip | pv -cpterba -N out > /dev/null 
      out: 2.62MiB 0:00:25 [ 109KiB/s] [ 107KiB/s] [                   <=>                ]
       in: 2.65GiB 0:00:25 [ 110MiB/s] [ 108MiB/s] [                   <=>                ]

La taille de sortie est de 2,62 Mio, l'entrée est de 2,65 Gio, soit 3 ordres de grandeur de plus.

Comme avantage secondaire, s'il est utilisé sur un fichier normal, pv vous donnera une ETA :

$ pv -cpterba -N in debian-8.2.0-amd64-DVD-1.iso | gzip | pv -cpterba -N out > /dev/null 
      out:  578MiB 0:00:27 [22.1MiB/s] [21.4MiB/s] [                  <=>                 ]
       in:  595MiB 0:00:27 [22.1MiB/s] [  22MiB/s] [==>                   ] 15% ETA 0:02:25

L'image DVD de Jessie est principalement constituée de fichiers compressés, elle ne se comprime donc pas aussi bien, mais cela prendrait encore deux minutes et demie.

Vous pouvez également utiliser pv -d pour surveiller un processus déjà en cours d'exécution - si vous appliquez cela à un compresseur en cours d'exécution, il vous dira où il se trouve sur le fichier d'entrée par rapport au fichier de sortie, vous permettant à nouveau de voir rapidement le rapport :

$ pv -pterba -d "$(pidof gzip)"
   3:/var/tmp/mp3s.tar:  911MiB 0:00:44 [  20MiB/s] [19.9MiB/s] [>         ]  9% ETA 0:07:35
   4:/var/tmp/mp3s.tar.gz:  906MiB 0:00:44 [  20MiB/s] [19.8MiB/s] [                <=>   ] 

Les fichiers tar des MP3 ne se compressent pas bien non plus.

Remarque : De nombreux compresseurs fonctionnent bloc par bloc. C'est pourquoi vous pouvez voir des choses comme le taux de transfert qui augmente puis devient 0, répétez. Vous devez laisser le compresseur fonctionner un peu avant de pouvoir vous faire une idée réelle du rapport attendu. Gardez à l'esprit que juste après un pic, il est probablement lu dans un bloc, mais pas encore écrit la version compressée, mais si vous avez déjà attendu 10 blocs, c'est au plus une erreur de 10 %.

En relation :Que fait un programme lorsqu'il envoie un signal SIGKILL ?

(Les options pv que j'utilise :-p pour activer la barre de progression ; -t pour activer le temps écoulé ; -e activer l'ETA ; -r pour afficher le taux de transfert ; -b activer le compteur d'octets ; -c faire plusieurs pv s dans une canalisation; -N pour définir les étiquettes).


Linux
  1. Modules du noyau Linux sans lesquels nous ne pouvons pas vivre

  2. Langage de programmation C - Introduction

  3. Garder une trace des programmes ?

  4. Pourquoi le CD n'est-il pas un programme ?

  5. Créer un programme dans bin

5 conseils pour maîtriser Linux

11 commandes Linux sans lesquelles je ne peux pas vivre

Qu'est-ce que Bonjour sur mon ordinateur ? Guide PC du programme Windows 10 Bonjour

Création d'une clé USB en direct de Manjaro Linux sous Windows et Linux

Comment créer Solus OS Live USB

Comment activer la compression GZIP dans Nginx