Google Cloud Platform 内のプロジェクト 間での Google Cloud Storage(GCS) バケット/オブジェクトを移動する方法をご紹介します。
概要
GCS Project A の GCS Bucket 01にあるオブジェクトを CGS Project B の GCS Bukect02 にコピーさせます。
違うプロジェクトにバケット/オブジェクトをコピーするには gsutil を使用して移動させることができます。移動させるには移動先のプロジェクトに移動元のサービス アカウントを追加する必要があります。
操作手順
サービスアカウントの設定
異なるプロジェクトに GCS バケットを移動させるには、移動させるためのサービスアカウントを追加する必要があります。このサービスアカウントには GCS で用意されているサービスアカウントを使用します。
- 移動元のGCP プロジェクトに設定します。
- メニューから Google Cloud Storage の「設定」をクリックします。
- Google Cloud Storage サービス アカウント をコピーします。
- 移動先の GCP プロジェクトに切り替えます。
- メニューから Google Cloud Storage の「ブラウザ」をクリックします。
- 対象バケットの権限を選択し、「追加」をクリックします。
- 新しいメンバーにコピーしたサービスアカウントを設定し、ロールを「ストレージ管理者」に設定し、保存します。
GCS バケットをコピー
gsutil cp コマンドを使用し、オブジェクトを転送先にコピーします。
- Cloud Shell を開きます。
- 移動元の GCP プロジェクトを設定します。
- 移動コマンドを実行する。
次のコマンドを実行し、特定のオブジェクトを移動先のバケットをコピーします。
gsutil cp gs://[SOURCE_BUCKET]/[OBJECT_NAME] gs://[DESTINATION_BUCKET]
移動先の GCS バケットを開き、バケット/オブジェクトがコピーできていることを確認します。
追加したサービスアカウントを削除して GCS バケットの移動は完了となります。
補足
バケットの移動コマンド
バケットをコピーさせる場合は次のコマンドになります。
gsutil cp -r gs://[SOURCE_BUCKET]/ gs://[DESTINATION_BUCKET]
すべてのフォルダ/ファイルをコピーさせるには、次のコマンドになります。
gsutil cp -r gs://[SOURCE_BUCKET]/* gs://[DESTINATION_BUCKET]
転送するファイルが多数ある場合は最上位の gsutil-m オプションを使用して並列マルチスレッド/マルチプロセッシング コピーを実行できます。
gsutil -m cp -r gs://[SOURCE_BUCKET]/* gs://[DESTINATION_BUCKET]
注意点
同名称のファイル名
移動先に移動させるオブジェクト名と同一名称があった場合は、オブジェクトが上書きされてしまいます。
そのため、オブジェクトを移動させる際には同一名称がないか事前に確認してください。
バケット名
バケット名はプロジェクト全体で一意(ユニーク名)のため、移動先のプロジェクトにGCS バケットとして移動させることはできません。GCS バケット のフォルダとしてを作成することができます。
ただし、 Google Cloud Storage URLは変更されてしまいます。
データは残ったまま
今回は cp コマンドを使用しているため、移動元のバケット/オブジェクトは残ったままので確認/使用済み後にバケット/オブジェクトを削除してください。
mv コマンドで使用すると、移動時に移動元のバケット/オブジェクトを削除されます。
Google Cloud Storage Transfer Service について
Google Cloud Storage Transfer Service では同じプロジェクトの GCS バケットのフォルダ/ファイルを移動はできますが、別プロジェクトへの移動はすることができませんでした。また、サービスアカウントを追加しても移動はできませんでした。
ちなみに Google Cloud Storage Transfer Service は次のケース時に使用することが公式では推奨になっています。
- 別のクラウド ストレージプロバイダから転送する
- オンプレミスから 1 TB 超のデータを転送する
参考ページ
- バケットの移動と名前変更 | Cloud Storage | Google Cloud
- オブジェクトの名前変更、コピー、移動 | Cloud Storage | Google Cloud
- 概要 | Cloud Storage Transfer Service のドキュメント | Google Cloud
- mv – Move/rename objects | Cloud Storage | Google Cloud
- トップレベルのコマンドライン オプション | Cloud Storage | Google Cloud
- How can I move data directly from one Google Cloud Storage project to another? – Stack Overflow
- How to transfer one cloud storage bucket to another blucket in another project from the web console?(Google グループ)
Leave a Reply
View Comments