¿La forma más rápida de mover una gran cantidad de archivos?

8

Tengo que mover alrededor de 320,000 archivos, 80,000 carpetas (solo 100 Gb) de datos. Algunos archivos son> 1GB pero la mayoría son <1kB.

He echado un vistazo al método más rápido de copiar archivos, pero no estoy seguro de cuán útil será alguno de estos, mi problema no es la velocidad de transferencia pura, sino la rapidez con que Windows puede manejar el IO de 320,000 archivos.

¿Crees que veré beneficios de velocidad usando xcopy, robocopy, teracopy o fastcopy?

Nos tomó mucho tiempo (más de 12 horas) copiarlos una vez (usando robocopy), y odio tener que volver a hacerlo. ¿Qué puedo hacer para acelerarlo?

El material está en una unidad externa USB 2.0.

A pesar de
fuente

Respuestas:

9

Algo como robocopy será su mejor apuesta. Para empezar, las unidades USB no pueden manejar una gran cantidad de E / S.

He empujado millones de archivos pequeños hacia y desde unidades USB usando robocopy. Lleva tiempo, pero hace el trabajo.

mrdenny
fuente
3

Como dijo mrdenny, Robocopy sería lo mejor, en parte debido a su robustez. El mejor consejo que puedo ofrecer, siempre que esté seguro de la limpieza de los archivos que se van a mover, es asegurarse de que el software antivirus esté desactivado mientras se mueven. Realmente no desea la sobrecarga de tener todos esos archivos escaneados.

John Gardeniers
fuente
1

Obviamente, hay una forma más rápida que todas las mencionadas aquí. Más rápido, pero menos flexible :-) Si ha colocado los archivos en una partición separada, puede copiar toda la partición en el disco de destino.

No estoy familiarizado con ninguna herramienta gratuita de Windows para el trabajo (la herramienta con soporte VSS sería perfecta), pero seguro que puede arrancar Ghost CD o Partition Magic CD, o arrancar un CD independiente de Linux. En Linux, solo ddla partición, o ntfsclonesi se trata de una partición NTFS.

kubanczyk
fuente
0

Si yo fuera usted, cambiaría el disco duro externo a un Firewire, la transferencia de velocidad es mucho más rápida que USB2.

Creo que tal vez empaquetar los archivos en un solo "tar", y luego transferir los archivos ahorraría un poco de tiempo. Porque reduce los tiempos de E / S, ya que solo copia 1 archivo gigante, en comparación con miles de archivos, también consume menos recursos, creo (durante la fase de copia). O puede canalizar el flujo de alquitrán directamente a su unidad USB.

chutsu
fuente
Sí, sé que el enfoque de alquitrán único definitivamente arrojará resultados, pero no estaba seguro de si construir el archivo único tomaría una cantidad significativa de tiempo.
en.spite
Firewire es bueno, pero eSATA también puede ser más rápido.
Chopper3
0

Encontré que la forma más eficiente de copiar grandes cantidades de archivos era transmitirlos primero a archivos ISO y luego copiar los ISO. De esta manera, el disco no se preocupa al emitir los miles de comandos necesarios para copiar archivos.

Por supuesto, esto depende de la estructura de su directorio. Tuve la suerte de tener un nuevo directorio creado a intervalos de 4.7GB, por lo que fue mucho más fácil crear un VBScript para automatizar el proceso.


fuente
No sigo tu lógica. Para crear el ISO, todos esos archivos deben leerse y escribirse en el ISO. Luego se lee el ISO para extraer los archivos y finalmente escribirlos en el destino. ¿Cómo es eso más eficiente que leerlos y escribirlos una vez?
John Gardeniers
¿Algún código de muestra en VBSCript, C # u otro lenguaje de script?
Kiquenet
@JohnGardeniers Lewis está apostando a que el tiempo que lleva copiar pequeños archivos en la red tiene una sobrecarga mucho mayor que el tiempo que lleva ponerlos en un ISO y luego transferir ese archivo. Realmente depende de su entorno particular, pero por poco intuitivo que parezca, puede ser más rápido transferir uno consolidado en lugar de miles de archivos pequeños.
Dom
0

Es casi seguro que experimentará un mejor rendimiento general para la secuencia de transferencia si primero empaqueta los archivos de origen en un único archivo comprimido (tar o comprimido en zip, etc.), luego transfiere el archivo a través de la red y luego desempaqueta el archivo en el destino.

No olvide que cuando transfiere el archivo a través de la red, será mejor que use ftp (u otro protocolo de transferencia orientado a archivos) que una simple copia de archivo SMB.

Utilizando un proceso como el anterior, transfiero rutinariamente directorios de aplicaciones de aproximadamente 60 GB (con aproximadamente 50,000-75,000 archivos) entre múltiples centros de datos separados geográficamente (EE. UU., Europa, Asia). La diferencia entre transferir un archivo a la vez y transferir un archivo comprimido a través de FTP es de 10 a 40 veces más rápido.

Rsync también puede ser tu amigo aquí (como puede serlo en muchos otros escenarios de transferencia de archivos).

Si está abierto a opciones comerciales, una solución de transmisión binaria basada en UDP que puede empujar bits a través de múltiples flujos UDP podría ser de valor para usted. Echa un vistazo a http://www.filecatalyst.com/

usuario18764
fuente
0

Otra opción sería usar Bittorrent usando un rastreador incorporado o DHT activado. El cliente agruparía todos los archivos en bloques (use 2 MB o más si está disponible). En el extremo receptor, recibirá archivos en grandes bloques a medida que se escriben en el disco duro. Esto ayuda a consolidar sus archivos pequeños en fragmentos de 2 MB y obtiene mejores tasas de transferencia y

Dom
fuente