このページでは、Cloud Storage のバケット内またはバケット間でオブジェクトをコピー、名前変更、移動する方法について説明します。
Cloud Storage の一部のツールを使用すると、オブジェクトの移動や名前変更が独自のオペレーションとして実行されているように見えます。しかし、オブジェクトは不変であるため、実際には常に元のオブジェクトをコピーした後で削除するという複数のオペレーションが行われています。
オブジェクトのコピー
いずれかの Cloud Storage バケットのオブジェクトをコピーするには:
コンソール
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
バケットのリストで、コピーするオブジェクトを含むバケットの名前をクリックします。
[バケットの詳細] ページが開き、[オブジェクト] タブが選択されています。
フォルダ内にあるオブジェクトに移動します。
オブジェクトに関連付けられたオブジェクト オーバーフロー メニュー(more_vert)をクリックします。
[コピー] をクリックします。
[オブジェクトのコピー] ペインが表示されます。
[移行先] フィールドに、コピー先バケットの名前と、コピーしたオブジェクトの名前を入力します。
[参照] をクリックして保存先を選択することもできますが、ブラウジングの選択肢は現在のプロジェクト内のバケットに制限されます。
[コピー] をクリックします。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
gcloud storage cp
コマンドを使用します。
gcloud storage cp gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/NAME_OF_COPY
ここで
SOURCE_BUCKET_NAME
は、コピーするオブジェクトが格納されているバケットの名前です。例:my-bucket
SOURCE_OBJECT_NAME
は、コピーするオブジェクトの名前です。例:pets/dog.png
DESTINATION_BUCKET_NAME
は、オブジェクトのコピー先のバケットの名前です。例:another-bucket
NAME_OF_COPY
は、オブジェクトのコピーに付ける名前です。例:shiba.png
正常に終了すると、レスポンスは次の例のようになります。
Copying gs://example-bucket/file.txt to gs://other-bucket/file-copy.txt Completed files 1/1 | 164.3kiB/164.3kiB
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
REST API
JSON API
gcloud CLI のインストールと初期化を行います。これにより、
Authorization
ヘッダーのアクセス トークンを生成できます。cURL
を使用して、POST
Object リクエストで JSON API を呼び出します。curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Length: 0" \ "https://storage.googleapis.com/storage/v1/b/SOURCE_BUCKET_NAME/o/SOURCE_OBJECT_NAME/rewriteTo/b/DESTINATION_BUCKET_NAME/o/NAME_OF_COPY"
ここで
SOURCE_BUCKET_NAME
は、コピーするオブジェクトが格納されているバケットの名前です。例:my-bucket
SOURCE_OBJECT_NAME
は、コピーするオブジェクトの URL エンコード名です。例:pets%2Fdog.png
として URL エンコードされているpets/dog.png
DESTINATION_BUCKET_NAME
は、オブジェクトのコピー先のバケットの名前です。例:another-bucket
NAME_OF_COPY
は、オブジェクトのコピーに付ける URL エンコード名です。例:shiba.png
rewrite
メソッドではサイズ制限されたデータのかたまりをコピーするため、特に大きなオブジェクトについては、コピーで複数のリクエストが必要になる場合があります。たとえば、
rewrite
リクエストに対する次のレスポンスは、追加のrewrite
リクエストが必要であることを示します。{ "kind": "storage#rewriteResponse", "totalBytesRewritten": 1048576, "objectSize": 10000000000, "done": false, "rewriteToken": TOKEN_VALUE }
後続のリクエストで
rewriteToken
を使用して、データのコピーを続行します。curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Length: 0" \ -d '{"rewriteToken": "TOKEN_VALUE"}' \ "https://storage.googleapis.com/storage/v1/b/SOURCE_BUCKET_NAME/o/SOURCE_OBJECT_NAME/rewriteTo/b/DESTINATION_BUCKET_NAME/o/NAME_OF_COPY"
ここで
TOKEN_VALUE
は、前のリクエストで返されたrewriteToken
値です。- 他のすべての値は、以前のリクエストで使用された値と一致します。
オブジェクトが完全にコピーされると、最後のレスポンスでは
done
プロパティがtrue
に設定され、rewriteToken
プロパティはなく、コピーのメタデータがresource
プロパティに含まれます。{ "kind": "storage#rewriteResponse", "totalBytesRewritten": 10000000000, "objectSize": 10000000000, "done": true, "resource": objects Resource }
XML API
gcloud CLI のインストールと初期化を行います。これにより、
Authorization
ヘッダーのアクセス トークンを生成できます。cURL
を使用して、PUT
Object リクエストで XML API を呼び出します。curl -X PUT \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-copy-source: SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME" \ "https://storage.googleapis.com/DESTINATION_BUCKET_NAME/NAME_OF_COPY"
ここで
SOURCE_BUCKET_NAME
は、コピーするオブジェクトが格納されているバケットの名前です。例:my-bucket
SOURCE_OBJECT_NAME
は、コピーするオブジェクトの名前です。例:pets/dog.png
DESTINATION_BUCKET_NAME
は、オブジェクトのコピー先のバケットの名前です。例:another-bucket
NAME_OF_COPY
は、オブジェクトのコピーに付ける URL エンコード名です。例:shiba.png
オブジェクトの移動または名前の変更
Cloud Storage のオブジェクトをバケット間で移動したり、バケット内のオブジェクト名を変更するには:
Console
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
バケットのリストで、移動または名前を変更するオブジェクトを含むバケットの名前をクリックします。
[バケットの詳細] ページが開き、[オブジェクト] タブが選択されています。
フォルダ内にあるオブジェクトに移動します。
オブジェクトに関連付けられたオブジェクト オーバーフロー メニュー(more_vert)をクリックします。
同じバケット内でオブジェクトに新しい名前を付ける場合は、[名前を変更] をクリックします。
上に重なったウィンドウで、オブジェクトの新しい名前を入力します。
[名前を変更] をクリックします。
オブジェクトを別のバケットに移動する場合は、[移動] をクリックします。
上に重なったウィンドウで [開く] をクリックします。
オブジェクトの移動先を選択します。
[選択] をクリックします。
[移動] をクリックします。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
gcloud storage mv
コマンドを使用します。
gcloud storage mv gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/DESTINATION_OBJECT_NAME
ここで
SOURCE_BUCKET_NAME
は、移動または名前変更するオブジェクトが格納されているバケットの名前です。例:my-bucket
SOURCE_OBJECT_NAME
は、移動または名前変更するオブジェクトの名前です。例:pets/dog.png
DESTINATION_BUCKET_NAME
は、移動または名前変更されたオブジェクトが格納されているバケットの名前です。例:another-bucket
DESTINATION_OBJECT_NAME
は、移動または名前変更後にオブジェクトに付ける名前です。例:shiba.png
正常に終了すると、レスポンスは次の例のようになります。
Copying gs://example-bucket/old-file.txt to gs://new-bucket/new-file.txt Removing gs://example-bucket/old-file.txt... Completed files 1/1 | 164.3kiB/164.3kiB
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
REST API
JSON API
JSON API を使用してオブジェクトを直接移動するか、名前を変更するには、まず目的のプロパティを持つオブジェクトのコピーを作成して、それに目的の名前を付けてから、元のオブジェクトを削除します。
XML API
XML API を使用してオブジェクトを直接移動するか、名前を変更するには、まず目的のプロパティを持つオブジェクトのコピーを作成してから、元のオブジェクトを削除します。
バケット間で 1 TB を超えるデータを移動する場合は Storage Transfer Service を使用することをおすすめします。
次のステップ
- オブジェクトのストレージ クラスを変更する。
- オブジェクトのメタデータを編集する。
- オブジェクトやバケットを公開アクセス可能にする。
- オブジェクトの命名要件について学習する。
- リクエストの前提条件を使用して競合状態を防止する方法について学習する。