Rutinariamente tengo que copiar el contenido de una carpeta en un sistema de archivos de red a mi computadora local. Hay muchos archivos (1000) en la carpeta remota que son relativamente pequeños, pero debido a la sobrecarga de la red, una copia regular cp remote_folder/* ~/local_folder/
lleva mucho tiempo (10 minutos).
Creo que es porque los archivos se copian secuencialmente; cada archivo espera hasta que finalice el anterior antes de que comience la copia.
¿Cuál es la forma más sencilla de aumentar la velocidad de esta copia? (Supongo que es realizar la copia en paralelo).
Comprimir los archivos antes de copiarlos no necesariamente acelerará las cosas porque pueden guardarse en diferentes discos en diferentes servidores.
Respuestas:
Mientras limite los comandos de copia que está ejecutando, probablemente podría usar un script como el publicado por Scrutinizer
fuente
&
al final delcp
comando permite que elwhile
bucle continúe e inicie el siguiente comando cp sin esperar. Elxargs
comando pasa los nombres de archivo en grupos de 4 (MAX_PARALLEL) alwhile
bucle.cp
. Obviamente, puede acelerar el cálculo a través del subprocesamiento múltiple . Pero no creo que lo mismo sea válido para la copia de datos del disco duro.Si tiene instalado GNU Parallel http://www.gnu.org/software/parallel/ , puede hacer esto:
Puede instalar GNU Parallel simplemente por:
Mire los videos de introducción de GNU Parallel para obtener más información: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
fuente
Una forma sería usar rsync, que solo copiará los cambios: los archivos nuevos y las partes cambiadas de otros archivos.
http://linux.die.net/man/1/rsync
La ejecución de cualquier forma de operación de copia paralela probablemente inundará su red y la operación de copia simplemente se detendrá o sufrirá cuellos de botella en el disco de origen o de destino.
fuente
Honestamente, la mejor herramienta es gsutil de Google. Maneja copias paralelas con recursividad de directorio. La mayoría de los otros métodos que he visto no pueden manejar la recursividad del directorio. No mencionan específicamente el sistema de archivos local a las copias del sistema de archivos local en sus documentos, pero funciona de maravilla.
Es otro binario para instalar, pero probablemente uno que ya pueda ejecutar teniendo en cuenta toda la adopción del servicio en la nube hoy en día.
fuente
Rsync paralelo usando find:
en una LAN corporativa, rsync solo hace aproximadamente 800Mbps; Con 6-8 trabajos puedo obtener más de 2.5 Gbps (a expensas de la alta carga). Limitado por los discos.
fuente
Hay muchas cosas que uno debe tener en cuenta dependiendo de la topología que tenga. Pero antes de comenzar a pensar en soluciones complejas, simplemente puede tratar de dividir la tarea en dos trabajos y verificar si el tiempo necesario se reducirá significativamente:
La próxima vez intente:
(es posible que desee reemplazar [al] * por algo más que coincida con aproximadamente la mitad de los archivos, tal vez [0-4] *, dependiendo del contenido de la carpeta)
Si el tiempo mejora drásticamente, puede ser más importante verificar si es necesario copiar todos los archivos (¿cuál es la proporción de archivos modificados a todos los archivos?)
fuente