El comando pv (Pipe Viewer) es una herramienta esencial para supervisar el flujo de datos a través de tuberías, además de permitir limitar la tasa de transferencia de I/O. Es especialmente útil en entornos donde se requiere controlar el uso del disco o red durante operaciones intensivas.
Copia de archivos con límite de velocidad
Para copiar un archivo limitando la velocidad a 1 megabyte por segundo:
pv -L 1m 11.sql > /tmp/12.sql
Copia de directorios con control de velocidad
Al copiar un directorio completo, se puede combinar tar y pv para aplicar límites de velocidad y mostrar el progreso real. Por ejemplo, copiar el contenido de test01/ a txt01/ a 2 MiB/s:
tar cf - "test01/" | pv -L 2m -s $(du -sb "test01/" | cut -f1) | tar xf - -C "txt01"
Este comando muestra una barra de progreso dinámica que indica el avance, la velocidad instantánea y el tiempo estimado.
Limitar la escritura al disco
Restringir la velocidad de escritura al disco cuando se crea un archivo comprimido:
tar zcf - txt01 | pv -L 2m > /tmp/txt01.tar.gz
Monitorear progreso durante compresión
Visualizar el progreso mientras se comprime un archivo mediante gzip:
pv 12.sql | gzip > 12.sql.gz
Transferencia remota con progreso detallado
Realizar una copia de seguridad remota entre dos servidores en red interna (192.168.1.217 → 192.168.1.220), asegurándose de que la conexión no sobrecargue la red:
ssh -p5110 192.168.1.217 tar zcf - /tmp/12.sql | pv --wait --bytes --rate-limit 80M > projectx.tar.gz
Progreso múltiple con etiquetas personalizadas
Para ver el progreso de cada etapa en una cadena de comandos (por ejemplo, transmisión y compresión), usar --name junto con --cursor:
ssh -p5110 192.168.1.217 tar cf - /tmp/12.sql | pv --wait --name ssh | gzip | pv --wait --name gzip > projectx.tgz
Salida esperada:
ssh: 233MiB 0:00:09 [24.4MiB/s] [ <=> ]
gzip: 29.1MiB 0:00:09 [3.04MiB/s] [ <=> ]
Cada línea representa una etapa distinta con su propio indicador de progreso.
Importación segura de datos en bases de datos activas
Al importar grandes volúmenes de SQL en una base de datos bajo carga, limitar la velocidad de entrada minimiza el impacto en el sistema:
pv -p -a -L2m 2020-09-14.hlz_ad.sql | mysql test01
Las opciones utilizadas son:
-p: muestra el progreso visual.-a: incluye la veloicdad promeido.-L2m: limita la tasa a 2 MiB/s.
Esto permite una carga gradual sobre el servidor, reduciendo el consumo de CPU y memoria.
Contar archivos que contienen texto específico
Buscar todos los archivos .c que contengan la palabra fopen, mostrando el número de resultados procesados en tiempo real:
find / -type f -name '*.c' -exec grep --files-with-match fopen \{\} \; | pv --line-mode
La salida muestra el número de archivos encontrados por segundo, útil para seguimiento en operaciones largas.