una todos script para otro opt omite mover los ficheros documento directorio copiar carpeta archivos archivo bash progress-bar cp

bash - todos - ¿Cómo puedo hacer una barra de progreso(copiar cp un directorio)?



mover todos los archivos de un directorio a otro linux (9)

Supongo que podría comparar el número de archivos en el directorio de origen con la cantidad de archivos en el directorio de destino a medida que avanza cp, o quizás hacerlo con el tamaño de la carpeta. Traté de encontrar ejemplos, pero todas las barras de progreso de bash parecen estar escritas para copiar archivos individuales. Quiero copiar un grupo de archivos (o un directorio, si el primero no es posible).


¿Qué tal algo así como

find . -type f | pv -s $(find . -type f | wc -c) | xargs -i cp {} --parents /DEST/$(dirname {})

Encuentra todos los archivos en el directorio actual, canaliza a través de PV mientras proporciona PV un tamaño estimado para que el medidor de progreso funcione y luego lo conecta a un comando de CP con el indicador --parents para que la ruta DEST coincida con la ruta SRC.

Un problema que aún tengo que superar es que si emite este comando

find /home/user/test -type f | pv -s $(find . -type f | wc -c) | xargs -i cp {} --parents /www/test/$(dirname {})

la ruta de destino se convierte en / www / test / home / user / test / .... FILES ... y no estoy seguro de cómo decirle al comando que se deshaga de la parte ''/ home / user / test''. Por eso tengo que ejecutarlo desde el directorio de SRC.


Aquí otra solución: use la bar herramientas

Podrías invocarlo así:

#!/bin/bash filesize=$(du -sb ${1} | awk ''{ print $1 }'') tar -cf - -C ${1} ./ | bar --size ${filesize} | tar -xf - -C ${2}

Tienes que recorrer el camino sobre el alquitrán, y será inexacto en archivos pequeños. También debe tener cuidado de que exista el directorio de destino. Pero es una forma.



Mi opción preferida es Copia avanzada , ya que utiliza los archivos originales de cp fuente.

$ wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.21.tar.xz $ tar xvJf coreutils-8.21.tar.xz $ cd coreutils-8.21/ $ wget --no-check-certificate https://raw.githubusercontent.com/atdt/advcpmv/master/advcpmv-0.5-8.21.patch $ patch -p1 -i advcpmv-0.5-8.21.patch $ ./configure $ make

Los nuevos programas ahora se encuentran en src / cp y src / mv. Puede optar por reemplazar sus comandos existentes:

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


Para agregar otra opción, puede usar cpv . Utiliza pv para imitar el uso de cp .

Funciona como pv pero puede usarlo para copiar directorios recursivamente

Puedes obtenerlo here


Para mostrar una barra de progreso mientras se hace una copia recursiva de archivos y carpetas y subcarpetas (incluidos enlaces y atributos de archivos), puede usar gcp (se instala fácilmente en Ubuntu y Debian ejecutando "sudo apt-get install gcp"):

gcp -rf SRC DEST

Aquí está el resultado típico al copiar una gran carpeta de archivos:

Copying 1.33 GiB 73% |##################### | 230.19 M/s ETA: 00:00:07

Tenga en cuenta que muestra solo una barra de progreso para toda la operación, mientras que si quiere una única barra de progreso por archivo, puede usar rsync :

rsync -ah --progress SRC DEST


Puede echar un vistazo a la herramienta vcp . Es una herramienta de copia simple con dos barras de progreso: una para el archivo actual y otra para general.

EDITAR

Aquí está el enlace a las fuentes: http://members.iinet.net.au/~lynx/vcp/ Manpage se puede encontrar aquí: http://linux.die.net/man/1/vcp

La mayoría de las distribuciones tienen un paquete para eso.


Una forma simple de unix es ir al directorio de destino y watch -n 5 du -s . Quizás hacerlo más bonito mostrándose como un bar. Esto puede ayudar en entornos en los que solo tiene las utilidades estándar de Unix y no tiene el alcance de instalar archivos adicionales. du-sh es la clave, ver es solo hacer cada 5 segundos. Pros : Funciona en cualquier sistema Unix Contras : Sin barra de progreso


También puede usar rsync lugar de cp así:

rsync -Pa source destination

Lo cual le dará una barra de progreso y tiempo estimado de finalización. Muy útil.