Você está se aproximando rapidamente das limitações do seu disco rígido. De fato, com as unidades de mercadorias atuais, é impossível reduzir o tempo de transferência com uma operação de cópia por arquivo.
Supondo que cada arquivo requer 1 HD de busca e tempo de busca é de 7 ms (o que é um pouco idealizado, realisticamente, cada arquivo exigirá duas buscas, a menos que o bitmap de volume esteja armazenado em cache no ram), na melhor das hipóteses, você gerenciará ~ 142 arquivos / s ( \ $ \ frac {1000} {7} = 142,8 ... \ $).
Com as especificações do OP (30 GB, 900.000 arquivos), é ~ 33K por arquivo (\ $ \ frac {30.000.000k} {900.000} = ~ 33,3 ... \ $. 33KB * 142 = 4,68 MBps.
O tempo mínimo para transferir 30 GB a 5 MBps é de ~ 1 hora e 40 minutos (\ $ \ frac {30.000} {5} = = 6.000 \ $ segundos. \ $ \ Frac {6.000} {60} = 100 \ $ minutos ou 1:40 horas)
Portanto, é impossível alcançar uma velocidade melhor que ~ 5 MBPS, e isso é com uma unidade ideal (e menos operações de busca. Isso é para uma busca por arquivo. Realmente, seriam duas). Você está limitado inteiramente pelo desempenho do disco.
A única maneira de melhorar o desempenho é copiando todo o sistema de arquivos e partindo sequencialmente. dd
pode fazer isso no linux.
O que você está tentando fazer?