GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Komprimierungsprogramm zeigt Live-Komprimierungsverhältnis an?

Einige Komprimierungsprogramme können Informationen anzeigen (wie Komprimierungsverhältnis oder Zeit- und Größensummen), während sie die Aufgabe ausführen, wie z. B. xz -v :

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

Beim Komprimieren einer großen Datei würde ich gerne das Komprimierungsverhältnis mitten in der Aufgabe wissen, damit ich den Prozess stoppen kann, wenn das Komprimierungsverhältnis niedrig ist, und es unkomprimiert lassen.

Gibt es andere Programme mit dieser Funktion? (xz hat eine hohe Komprimierungsrate, ist aber langsam)

Akzeptierte Antwort:

Der generische Weg, dies zu tun, ist etwas wie pv zu verwenden um sowohl die Eingabe- als auch die Ausgabegröße des Komprimierungsprogramms zu überwachen. Zum Beispiel:

$ 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] [                           <=>        ]

Oben ist leicht zu erkennen, dass die Ausgabegröße gleich der Eingabegröße ist – wie erwartet, wenn man versucht, Zufallsdaten zu komprimieren.

Wenn wir stattdessen eine Datei ausprobieren, die wirklich gut komprimiert:

$ 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] [                   <=>                ]

Die Ausgabegröße beträgt 2,62 MiB, die Eingabe 2,65 GiB – 3 Größenordnungen größer.

Als Nebeneffekt, wenn es auf einer normalen Datei verwendet wird, pv gibt Ihnen eine voraussichtliche Ankunftszeit:

$ 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

Das Jessie-DVD-Image besteht hauptsächlich aus komprimierten Dateien, daher lässt es sich nicht so gut komprimieren, aber es würde weitere zweieinhalb Minuten dauern, bis es fertig ist.

Sie können auch pv -d verwenden um einen bereits laufenden Prozess zu überwachen – wenn Sie das auf einen laufenden Kompressor anwenden, wird es Ihnen sagen, wo es sich in der Eingabe- vs. Ausgabedatei befindet, wodurch Sie wiederum schnell das Verhältnis sehen können:

$ 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] [                <=>   ] 

Tar-Dateien von MP3s lassen sich auch nicht gut komprimieren.

Hinweis: Viele Kompressoren arbeiten blockweise. Aus diesem Grund sehen Sie möglicherweise Dinge wie die Übertragungsrate, die dann 0 beträgt, wiederholen Sie dies. Sie müssen den Kompressor eine Weile laufen lassen, bevor Sie eine wirkliche Vorstellung von dem erwarteten Verhältnis bekommen. Denken Sie daran, dass es direkt nach einer Spitze wahrscheinlich in einem Block gelesen, aber noch nicht in der komprimierten Version geschrieben wurde – aber wenn Sie bereits 10 Blöcke gewartet haben, ist das höchstens ein Fehler von 10 %.

Verwandte:Was macht ein Programm, wenn es ein SIGKILL-Signal sendet?

(Die von mir verwendeten pv-Optionen:-p um den Fortschrittsbalken einzuschalten; -t um die verstrichene Zeit einzuschalten; -e um die ETA einzuschalten; -r um die Übertragungsrate anzuzeigen; -b um den Bytezähler einzuschalten; -c um mehrere pv zu machen s in einer Rohrleitung; -N um die Labels festzulegen).


Linux
  1. Den Überblick über Programme behalten?

  2. Warum ist Cd kein Programm?

  3. Messung der RAM-Nutzung eines Programms?

  4. Python-Programm frisst RAM

  5. Multithread-Unterstützung in 7za

5 Tipps zum Beherrschen von Linux

11 Linux-Befehle, ohne die ich nicht leben kann

Was ist Bonjour auf meinem Computer? PC-Leitfaden für das Windows 10 Bonjour-Programm

Erstellen eines Live-USB von Manjaro Linux in Windows &Linux

So erstellen Sie Solus OS Live USB

So aktivieren Sie die GZIP-Komprimierung in Nginx