Necesito copiar un directorio muy grande (hablando en terabytes aquí) y quiero monitorear el progreso.
Descubrí que pv
es una buena utilidad, pero ¿cómo puedo usarla para copiar directorios de forma recursiva? ( pv src > dst
no funciona porque son directorios)
PD: se ejecutó en OS X Mountain Lion, pv
se instaló desde puertos Mac
Puede usar
tar
opax
ocpio
:fuente
v
altar
comando para ver los nombres de los archivos.tar cf -
genera un flujo que contiene los archivos y sus metadatos, que se alimenta a través de una tubería a pv que lo alimenta sin tocar al otrotar
mientras imprime una indicación de progreso, y el otrotar
extrae los datos en ese flujo. Los tres comandos se ejecutan simultáneamente y procesan los datos tal como vienen, no hay nada almacenado en el disco, no hay nada almacenado en la memoria que no sean los almacenamientos intermedios de tuberías y los almacenamientos intermedios de comandos que solo ascienden a unos pocos kilobytes.pv
no tiene forma de saber cuántos datos hay que transferir. Si tiene una estimación de esa cantidad, puede pasársela con la-s
opción (GNUdu -sb src
le daría una buena aproximación si los archivos son lo suficientemente grandes)Alquitrán.
Ejemplo:
fuente
Aquí hay algunos comandos para copiar directorios con información de progreso.
Si hay muchos archivos pequeños:
Esto informará el progreso en función del número de archivos que se copian.
Puede redirigir a
/dev/null
si no lo necesitalogfile
.Use el siguiente comando para obtener
filecount
:Si hay pocos archivos enormes:
Esto informará el progreso en función de los bytes que se copian.
targetdir
debe existirUse el siguiente comando para obtener
size
:Si quieres usar rsync:
Obtenga
filecount
como se muestra arriba.Si está copiando en el mismo sistema, entonces
rsync -a
es prácticamente igual quecp -a
. Las ventajas de rsync es cuando está copiando a través de la red o si está actualizando (o comparando) una copia anterior.Vea aquí para más detalles:
fuente
Puede hacer
du -b /directory/
tanto en el origen como en el destino mientras se está ejecutando un comando de copia normal y comparar los dos. Esto es igual de efectivo y no ralentiza el proceso de copia empujándolo a través de una tubería.fuente
fuente