我正在尝试 Get-S3Object -BucketName 试点,但它有很多子目录。
问问题
30573 次
3 回答
14
您可能希望使用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)"
于 2014-02-28T16:07:30.417 回答
4
您想使用 Read-S3Object 复制到本地作业。Read-S3Object 调用 Get-S3Object,所以你只需要这个:
Read-S3Object -BucketName $myS3Bucket-KeyPrefix $myS3SubDirectory -Folder $myLocalFolder
于 2015-01-30T18:24:02.337 回答
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)}
于 2014-03-06T17:59:45.687 回答