Te estás acercando rápidamente a las limitaciones de tu disco duro. De hecho, con las unidades de productos básicos actuales, es imposible mejorar su tiempo de transferencia con una operación de copia por archivo.
Suponiendo que cada archivo requiere 1 búsqueda HD y el tiempo de búsqueda es de 7 ms (lo cual es un poco idealizado, de manera realista, cada archivo requerirá dos búsquedas, a menos que el mapa de bits de volumen se almacene en caché en ram), en el mejor de los casos, administrará ~ 142 archivos / seg ( \ $ \ frac {1000} {7} = 142.8 ... \ $).
Con las especificaciones OP (30 GB, 900,000 archivos) que son ~ 33K por archivo (\ $ \ frac {30,000,000k} {900,000} = ~ 33.3 ... \ $. 33KB * 142 = 4.68 MBps.
El tiempo mínimo para transferir 30 GB a 5 MBps es de ~ 1 hora, 40 minutos (\ $ \ frac {30,000} {5} = = 6,000 \ $ segundos. \ $ \ Frac {6,000} {60} = 100 \ $ minutos o 1:40 horas)
Por lo tanto, es imposible lograr una velocidad mejor que ~ 5 MBPS, y eso es con una unidad ideal (y menos operaciones de búsqueda. Esto es para una búsqueda por archivo. Realmente, serían dos). Estás completamente limitado por el rendimiento del disco.
La única forma de mejorar el rendimiento es copiar el sistema de archivos completo y la partición secuencialmente. dd
Puede hacer esto en Linux.
¿Que estás tratando de hacer?