Cómo monitorear el progreso de (copiar/respaldar/comprimir) datos usando el comando pv


Al hacer copias de seguridad, hacer frente/mover archivos grandes en su sistema Linux, es posible que desee supervisar el progreso de una operación en curso. Muchas herramientas de terminal no tienen la funcionalidad para permitirle ver información de progreso cuando se ejecuta un comando en una tubería.

En este artículo, veremos un comando importante de Linux/Unix llamado pv.

Pv es una herramienta basada en terminal que le permite monitorear el progreso de los datos que se envían a través de una tubería. Cuando usa el comando pv, le brinda una visualización visual de la siguiente información:

  1. El tiempo transcurrido.
  2. El porcentaje completado, incluida una barra de progreso.
  3. Muestra la tasa de rendimiento actual.
  4. El total de datos transferidos.
  5. y la ETA (tiempo estimado).

¿Cómo instalar el comando pv en Linux?

Este comando no se instala de forma predeterminada en la mayoría de las distribuciones de Linux, por lo tanto, puede instalarlo siguiendo los pasos a continuación.

Primero debe activar el repositorio EPEL y luego ejecutar el siguiente comando.

# yum install pv
# dnf install pv            [On Fedora 22+ versions]
Dependencies Resolved

=================================================================================
 Package       Arch              Version                   Repository       Size
=================================================================================
Installing:
 pv            x86_64            1.4.6-1.el7               epel             47 k

Transaction Summary
=================================================================================
Install  1 Package

Total download size: 47 k
Installed size: 93 k
Is this ok [y/d/N]: y
Downloading packages:
pv-1.4.6-1.el7.x86_64.rpm                                 |  47 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : pv-1.4.6-1.el7.x86_64                                         1/1 
  Verifying  : pv-1.4.6-1.el7.x86_64                                         1/1 

Installed:
  pv.x86_64 0:1.4.6-1.el7                                                        

Complete!
# apt-get install pv
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  pv
0 upgraded, 1 newly installed, 0 to remove and 533 not upgraded.
Need to get 33.7 kB of archives.
After this operation, 160 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu/ trusty/universe pv amd64 1.2.0-1 [33.7 kB]
Fetched 33.7 kB in 0s (48.9 kB/s)
Selecting previously unselected package pv.
(Reading database ... 216340 files and directories currently installed.)
Preparing to unpack .../archives/pv_1.2.0-1_amd64.deb ...
Unpacking pv (1.2.0-1) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
Setting up pv (1.2.0-1) ...
# emerge --ask sys-apps/pv

Puede usar el puerto para instalarlo de la siguiente manera:

# cd /usr/ports/sysutils/pv/
# make install clean

O agregue el paquete binario de la siguiente manera:

# pkg_add -r pv

¿Cómo uso el comando pv en Linux?

pv se usa principalmente con otros programas que carecen de la capacidad de monitorear el progreso de una operación en curso. Puede usarlo colocándolo en una tubería entre dos procesos, con las opciones adecuadas disponibles.

La entrada estándar de pv pasará a su salida estándar y el progreso (salida) se imprimirá en el error estándar. Tiene un comportamiento similar al comando cat en Linux.

La sintaxis del comando pv es la siguiente:

pv file
pv options file
pv file > filename.out
pv options | command > filename.out
comand1 | pv | command2 

Las opciones utilizadas con pv se dividen en tres categorías, interruptores de visualización, modificadores de salida y opciones generales.

  1. Para activar la barra de visualización, use la opción -p.
  2. Para ver el tiempo transcurrido, use la opción –timer.
  3. Para activar el temporizador ETA que intenta adivinar cuánto tiempo tomará antes de que se complete una operación, use la opción –eta. La suposición se basa en las tasas de transferencia anteriores y el tamaño total de los datos.
  4. Para activar un contador de tarifas, use la opción –rate.
  5. Para mostrar la cantidad total de datos transferidos hasta el momento, use la opción –bytes.
  6. Para mostrar el informe de progreso del porcentaje entero en lugar de una indicación visual, use la opción -n. Esto puede ser bueno cuando se usa pv con el comando de diálogo para mostrar el progreso en un cuadro de diálogo.

  1. Para esperar hasta que se transfiera el primer byte antes de mostrar la información de progreso, use la opción –wait.
  2. Para asumir que la cantidad total de datos que se transferirán es SIZE bytes al calcular el porcentaje y ETA, use la opción –size SIZE.
  3. Para especificar segundos entre actualizaciones, use la opción –interval SECONDS.
  4. Utilice la opción –force para forzar una operación. Esta opción obliga a pv a mostrar imágenes cuando el error estándar no es una terminal.
  5. Las opciones generales son –ayuda para mostrar información de uso y –versión para mostrar información de versión.

Usar el comando pv con ejemplos

1. Cuando no se incluye ninguna opción, los comandos pv se ejecutan con las opciones predeterminadas -p, -t, -e, -r y -b.

Por ejemplo, para copiar el archivo opensuse.vdi a /tmp/opensuse.vdi, ejecute este comando y observe la barra de progreso en el screencast.

# pv opensuse.vdi > /tmp/opensuse.vdi

2. Para crear un archivo zip desde su archivo/var/log/syslog, ejecute el siguiente comando.

# pv /var/log/syslog | zip > syslog.zip

3. Para contar el número de líneas, palabras y bytes en el archivo/etc/hosts mientras se muestra solo la barra de progreso, ejecute este comando a continuación.

# pv -p /etc/hosts | wc

4. Supervise el progreso de la creación de un archivo de copia de seguridad mediante la utilidad tar.

# tar -czf - ./Downloads/ | (pv -p --timer --rate --bytes > backup.tgz)

5. Usar pv y la herramienta basada en terminal de diálogo juntas para crear una barra de progreso de diálogo de la siguiente manera.

# tar -czf - ./Documents/ | (pv -n > backup.tgz) 2>&1 | dialog --gauge "Progress" 10 70

Resumen

Esta es una buena herramienta basada en terminal que puede usar con herramientas que no tienen la capacidad de monitorear el progreso de una operación como hacer frente/mover/hacer copias de seguridad de archivos. Para más opciones, consulte man pv.

Espero que encuentre útil este artículo y que pueda publicar un comentario si tiene alguna idea que agregar sobre el uso del comando pv. Y si obtiene algún error mientras lo usa, también puede dejar un comentario.