¿Cómo permitir que xz muestre el porcentaje de progreso al comprimir el dispositivo de bloque en Linux?

¿Cómo permitir que xz muestre el porcentaje de progreso al comprimir el dispositivo de bloque en Linux?

Cuando uso xz para comprimir un dispositivo de bloque (por ejemplo /dev/sda1), --verbosemuestra el tamaño actual leído del archivo de entrada (128 MiB a continuación). Sin embargo, no muestra el porcentaje de lectura del archivo de entrada ( --- %a la izquierda). ¿Es posible darle a xz una pista sobre el tamaño de este dispositivo para que pueda mostrar el porcentaje? Por ejemplo, al comprimir un archivo normal, xz se muestra 0.7 %a continuación.

$ 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
$ 

Respuesta1

xzno tiene capacidad para ver el tamaño de las particiones ya que no son archivos comunes y, por lo tanto, no informará sobre ello.

Sin embargo, lo que podrías hacer es procesarlo con dd if=/dev/sda1 status=progress | xz -1k --verbose > /dev/null. Aunque no obtendrás los xzdetalles. Lo que tendría que hacer es redirigir la salida de cada uno a ttyarchivos o archivos separados tail.

Respuesta2

El tamaño de la partición (kibibytes) se puede obtener de /proc/partitions, luego ddse puede pasar la salida pv, de esta manera:

$ 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

información relacionada