适用于PowerShell的Google Cloud Tools Copy-GcsObject使用多区域存储桶返回错误

时间:2018-06-06 16:15:25

标签: powershell google-cloud-platform google-cloud-tools

我正在尝试使用cmdlet Copy-GcsObject 来备份某些文件但它失败了。

Copy-GcsObject -SourceBucket "my-bucket" -SourceObjectName "Drivers/storage/PFJ82/Drivers/Production/Windows10-x64/iaStorAC.inf/iaStorF.sys" -DestinationObjectName  "Drivers/storage/PFJ82/Drivers/Production/Windows10-x64/iaStorAC.inf/iaStorF.sys" -DestinationBucket "central-backup"

当我尝试将文件对象从区域存储桶复制到多区域存储桶时,它返回以下错误。有没有办法解决这个问题?

Copy-GcsObject : Google.Apis.Requests.RequestError
The combination of locationConstraint and storageClass you provided is not supported for your project [400]
Errors [
    Message[The combination of locationConstraint and storageClass you provided is not supported for your project] Location[ - ] Reason[invalid] 
Domain[global]
]
At line:1 char:1
+ Copy-GcsObject -SourceBucket "dr-db-bucket" -SourceObjectName "Driver ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Copy-GcsObject], GoogleApiException
    + FullyQualifiedErrorId : Google.GoogleApiException,Google.PowerShell.CloudStorage.CopyGcsObject

如果我复制到同一地区的另一个区域桶,它可以正常工作。

1 个答案:

答案 0 :(得分:0)

正如您所指出的,

The error you are getting来自您的存储桶。如果区域存储类中有一个存储区而另一个存储区位于多区域存储类上,则复制操作会因storage classes的不同而无法执行,这些区别基于不同的位置。

当您使用具有区域存储类的两个存储桶执行相同的操作时,它可以工作,因为它们具有相同的存储类。

解决方法是遵循@Adam的建议并运行gsutil cp命令在存储桶之间复制文件。首先,您可以使用以下命令访问Cloud Storage PowerShell Provider:

cd gs:\

然后使用此命令在存储桶之间复制文件,无论存储类如何:

gsutil cp gs://[BUCKET_A/YOUR_FILE] gs://[BUCKET_B]