使用AWS Powershell将数据从Amazon S3 Server复制到本地驱动器。

时间:2014-02-28 16:04:34

标签: powershell amazon-web-services aws-powershell

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

3 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:1)

我所拥有的适用于Powershell的AWS版本不允许使用copy-s3object的管道。所以你可以使用read-s3object

此外,get-s3object没有存储桶名称参数,很奇怪。

Get-S3Object -BucketName mybucket -Key path/to/files | % { Read-S3Object -BucketName mybucket -Key $_.Key -File $("C:\"+$_.key)}

答案 2 :(得分:1)

您希望使用Read-S3Object复制到本地作业。 Read-S3Object调用Get-S3Object,所以你只需要这个:

Read-S3Object -BucketName $myS3Bucket-KeyPrefix $myS3SubDirectory -Folder $myLocalFolder
相关问题