Você deseja copiar os arquivos um por um, mas com toda a E / S concluída de forma assíncrona .
Isso significa que o aplicativo emitirá várias solicitações de leitura de uma só vez, e o sistema operacional as concluirá da maneira que puder e indicará ao aplicativo que o bloco está pronto. Em seguida, o aplicativo emitirá uma solicitação de gravação e, novamente, o sistema operacional o concluirá em seu próprio agendamento e notificará o aplicativo quando ele for concluído. Na prática, isso significa que o aplicativo terá várias solicitações de leitura pendentes e várias solicitações de gravação pendentes a qualquer momento.
Em segundo lugar, o que importa é o tamanho das solicitações de leitura / gravação. Versões recentes do Windows (começando com o Vista) é mais rápido ler dados em blocos menores e é mais rápido escrevê-los em blocos maiores. Por outro lado, a leitura de um local de rede é mais rápida com blocos maiores.
É assim que o Windows possui robocopy
funciona e é muito bom.
-
Como bônus - ao copiar muitos e muitos arquivos pequenos, o processo de cópia acaba gastando um tempo desproporcionalmente longo abrindo e fechando arquivos. Então, o que você quer é um aplicativo que olhe à frente da sua fila de cópia e pré-abra os arquivos com antecedência. Isso realmente chuta a cópia para outro nível em termos de velocidade.