Búsqueda de sitios web

Copia avanzada: agregue barra de progreso a los comandos cp y mv en Linux


Las herramientas GNU cp y GNU mv se utilizan para copiar y mover archivos y directorios en el sistema operativo GNU/Linux. Una característica que falta en estas dos utilidades es que no muestran ninguna barra de progreso. Si copia un archivo o directorio de gran tamaño, realmente no sabe cuánto tardará en completarse el proceso de copia ni el porcentaje de datos copiados. No verá qué archivo se está copiando actualmente ni cuántos ya se han copiado. Todo lo que verá es sólo el cursor parpadeante y el indicador LED del disco duro. Gracias a Advanced Copy, un parche para Gnu Coreutils, ahora podemos añadir barra de progreso a cp y mv comandos en Linux y muestra la barra de progreso al copiar y/o mover archivos y directorios grandes.

¿Qué es la copia avanzada?

Advanced Copy es un mod para los programas GNU cp y GNU mv . Agrega una barra de progreso y proporciona información sobre lo que sucede mientras copia o mueve archivos y carpetas. No sólo la barra de progreso, también muestra la velocidad de transferencia de datos, el tiempo restante estimado y el nombre del archivo que se está copiando actualmente. Al final, verá un breve resumen sobre cuántos archivos se copian y cuánto tiempo llevó copiarlos.

Instale el parche 'Copia avanzada' para agregar la barra de progreso a los comandos cp y mv en Linux

Los comandos cp y mv son parte de GNU coreutils. Por lo tanto, debe descargar la última versión de GNU coreutils desde aquí.

wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.32.tar.xz

Extraiga el archivo descargado usando el comando:

tar xvJf coreutils-8.32.tar.xz

Este comando extraerá el archivo coreutils en una carpeta llamada coreutils-8.32 en el directorio actual. CD en él:

cd coreutils-8.32/

Descargue el parche de copia avanzada usando el siguiente comando:

wget https://raw.githubusercontent.com/jarun/advcpmv/master/advcpmv-0.8-8.32.patch

Finalmente, aplique el parche ejecutando los siguientes comandos uno por uno:

patch -p1 -i advcpmv-0.8-8.32.patch
./configure
make

Ahora se crearán dos nuevos archivos binarios parcheados, a saber, cp y mv en la carpeta coreutils-8.32/src. Simplemente cópielos a su ` PATH como se muestra a continuación:

sudo cp src/cp /usr/local/bin/cp
sudo cp src/mv /usr/local/bin/mv

Eso es todo. Los comandos cp y mv ahora tienen funcionalidad de barra de progreso.

Siempre que desee una barra de progreso mientras copia o mueve archivos y directorios, simplemente agregue el indicador -g como se muestra a continuación:

cp -g archlinux.iso mydownload/

O utilice el indicador --progress-bar:

cp --progress-bar archlinux.iso mydownload/

Salida de muestra:

Copying at  25.7 MiB/s (about 0h 0m 1s remaining)
archlinux.iso                                                          568.1 MiB / 646.0 MiB
[=========================================================================>                  ] 87.9 %

Agregue la barra de progreso a los comandos cp y mv en Linux

Al final del proceso de copia, verá cuántos archivos se copiaron, cuánto tiempo llevó copiar los archivos y la velocidad de transferencia de datos por segundo. Bonito, ¿no?

1 files (646.0 MiB) copied in 11.8 seconds ( 54.7 MiB/s).

Para copiar un directorio y sus subdirectorios de forma recursiva, simplemente agregue el indicador -R:

cp -gR directory1/ directory2/

De manera similar, para mover archivos usando el comando mv, ejecute:

mv -g archlinux.iso mydownload/

O utilice el indicador --progress-bar:

mv --progress-bar archlinux.iso mydownload/

Para mover directorios con el comando mv, use:

mv -g directory1/ directory2/

También puede crear alias para guardar algunas pulsaciones de teclas. Para hacerlo, edite el archivo ~/.bashrc:

nano ~/.bashrc

Agregue las siguientes líneas al final:

alias cp='/usr/local/bin/cp -gR'
alias mv='/usr/local/bin/mv -g'

Presione Ctrl+o y Ctl+x para guardar y cerrar el archivo.

Ahora ejecute el siguiente comando para que los cambios surtan efecto:

source ~/.bashrc

De ahora en adelante, puedes usar los comandos cp o mv sin -g (o --progress-bar ) bandera.

Tenga en cuenta que los programas originales no se sobrescriben. Aún puedes llamarlos en cualquier momento a través de /usr/bin/cp o /usr/bin/mv.

Agregar la funcionalidad de la barra de progreso a los comandos cp y mv es una buena idea si copia o mueve con frecuencia muchos archivos y directorios grandes. Ahora puede ver qué sucede exactamente mientras copia y mueve archivos, en lugar de mirar la pantalla.

Nota:

El autor original envió el parche al equipo que mantiene GNU CoreUtils. No fusionarán este parche porque mv y cp tienen funciones completas.

Recursos:

  • Repositorio GitHub de copia avanzada
  • Copia avanzada en Internet Archive

Lectura relacionada:

  • gcp: una utilidad avanzada de copia de archivos para Linux
  • Cómo monitorear el progreso de los datos a través de una tubería usando el comando 'pv'

Artículos relacionados