Ant*_*ace 13

您可能希望使用Copy-S3Object代替实际复制.Get-S3Object返回S3Object元数据的集合.使用Get-S3Object隔离要复制的对象,然后将它们中的重要信息(Key)传递给Copy-S3Object.

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

$srcBucketName = "myBucket"
$objects = get-s3object -bucketname $srcBucketName -KeyPrefix "mySubdirectory"
Run Code Online (Sandbox Code Playgroud)

如果需要从所有目录中复制数据,可以通过单独调用get-s3object将这个整体操作分解为更小的块,对于存储桶中的每个目录.

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


准备好复制后,您可以执行以下操作:

$objects | 
% { copy-s3object -BucketName $srcBucketName -Key $_.Key -LocalFile "somePath" }
Run Code Online (Sandbox Code Playgroud)

...您已经定义了本地路径.您甚至可以通过解析字符串中的键将子目录和键与本地路径匹配:"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