我正在尝试Get-S3Object -BucketName试验,但是它有很多子目录。

最佳答案

您可能想使用Copy-S3Object进行实际复制。 Get-S3Object返回S3Object元数据的集合。使用Get-S3Object隔离要复制的对象,然后将其中的重要信息(密钥)传递到Copy-S3Object。

您可以使用KeyPrefix参数将结果过滤到特定的子目录。例如:

$srcBucketName = "myBucket"
$objects = get-s3object -bucketname $srcBucketName -KeyPrefix "mySubdirectory"

如果您需要从所有目录中复制数据,则可以通过分别针对存储桶中的每个目录分别调用get-s3object来将整个操作分成较小的块。

如果各个目录仍然太大,则可以使用MaxKeys参数进一步分块操作。

准备好复制后,您可以执行以下操作:
$objects |
% { copy-s3object -BucketName $srcBucketName -Key $_.Key -LocalFile "somePath" }

...您定义本地路径的位置。您甚至可以通过解析字符串中的键,将子目录和键与本地路径匹配:"C:/someDir/$($_.Key)"
  • Get-S3Object文档:http://docs.aws.amazon.com/powershell/latest/reference/items/Get-S3Object.html
  • Copy-S3Object文档:http://docs.aws.amazon.com/powershell/latest/reference/items/Copy-S3Object.html
  • 10-04 20:30