Google Cloud Tools для PowerShell Copy-GcsObject возвращает ошибку с мультирегиональной корзиной

Я пытаюсь использовать командлет 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 ответ

Как вы указали, ошибка, которую вы получаете, связана с тем, что ваши корзины находятся в разных классах хранения. Если один сегмент в классе региональных хранилищ, а другой - в классе мультирегиональных хранилищ, операция копирования не выполняется из-за различий в классах хранения, которые основаны на разных местоположениях.

Когда вы выполняете одну и ту же операцию с двумя сегментами, имеющими класс Regional Storage, это работает, потому что они имеют один и тот же класс.

Решением для этого было бы следовать совету @ Адама и запустить gsutil cp Команда скопировать ваши файлы между ведрами. Во-первых, вы можете получить доступ к поставщику PowerShell в облачном хранилище с помощью этого:

cd gs:\

И затем используйте эту команду, чтобы скопировать ваши файлы между сегментами, независимо от класса хранения:

gsutil cp gs://[BUCKET_A/YOUR_FILE] gs://[BUCKET_B]
Другие вопросы по тегам