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]