Existem duas razões para a diferença de desempenho aqui:
- Uploads do Powershell em um único segmento
- Você está copiando cada arquivo em série
O AWS CLI é muito mais rápido porque usa vários segmentos (até 10 por padrão) e, portanto, está executando várias operações simultâneas.
Você pode acelerar o processo alterando seu script para usar a opção -parallel
, limitando o número de operações simultâneas.
O foreach ficaria assim:
foreach -parallel -throttlelimit 10 ($file in $files){
Copy-S3Object -BucketName bucket -Key $file.Key -DestinationKey "$date/$($file.key)" -DestinationBucket newbucket Remove-S3Object -BucketName bucket -Key $file.Key -Force
}
Dependendo do seu sistema, o Windows pode limitar você a apenas 5 processos paralelos, mas isso ainda deve proporcionar uma velocidade razoável.