Wie kann xz den prozentualen Fortschritt beim Komprimieren von Blockgeräten in Linux anzeigen?

Wie kann xz den prozentualen Fortschritt beim Komprimieren von Blockgeräten in Linux anzeigen?

Wenn ich xz verwende, um ein Blockgerät zu komprimieren (z. B. /dev/sda1), --verbosewird die aktuelle Größe angezeigt, die aus der Eingabedatei gelesen wird (unten 128 MiB). Es wird jedoch nicht der Prozentsatz der gelesenen Eingabedatei angezeigt ( --- %links). Ist es möglich, xz einen Hinweis auf die Größe dieses Geräts zu geben, damit es den Prozentsatz anzeigen kann? Beim Komprimieren einer normalen Datei zeigt xz beispielsweise 0.7 %Folgendes an.

$ sudo xz -1ck --verbose /dev/sda1 > /dev/null
/dev/sda1 (1/1)
  --- %        12.2 MiB / 128.0 MiB = 0.095    21 MiB/s       0:06             
^C
$ sudo xz -1ck --verbose a_normal_file > /dev/null
a_normal_file (1/1)
  0.7 %         11.6 MiB / 12.7 MiB = 0.916   2.3 MiB/s       0:05             
^C
$ 

Antwort1

xzkann die Größe von Partitionen nicht erkennen, da es sich nicht um normale Dateien handelt, und meldet sie daher auch nicht.

Was Sie jedoch tun könnten, ist, es mit zu verarbeiten dd if=/dev/sda1 status=progress | xz -1k --verbose > /dev/null. Sie erhalten jedoch keine xzDetails. Sie müssten die Ausgabe jedes einzelnen in separate tty's oder Dateien umleiten und taildiese dann erneut ausführen.

Antwort2

Die Partitionsgröße (Kibibyte) kann von abgerufen werden /proc/partitions, die Ausgabe kann dann wie folgt dddurchgereicht werden :pv

$ kb=$(grep $(basename /dev/sdb1) /proc/partitions | awk '{print $3}')
$ sudo dd if=/dev/sdb1 | pv -s ${kb}K | xz -1k >/dev/null
72,2MiO 0:00:20 [2,58MiB/s] [========>                         ] 28% ETA 0:00:49

verwandte Informationen