我正在尝试使用Get-S3Object -BucketName pilot命令,但它有很多子目录。
我正在尝试使用Get-S3Object -BucketName pilot命令,但它有很多子目录。
您可能希望使用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)"
Read-S3Object -BucketName $myS3Bucket-KeyPrefix $myS3SubDirectory -Folder $myLocalFolder
Get-S3Object -BucketName mybucket -Key path/to/files | % { Read-S3Object -BucketName mybucket -Key $_.Key -File $("C:\"+$_.key)}