BLOB のコピーCopy Blob

Copy Blob 操作は、BLOB をストレージ アカウント内にコピーします。The Copy Blob operation copies a blob to a destination within the storage account.

バージョン 2012-02-12 以降では、Blob のコピー操作のソースは、Azure ストレージ アカウント内のコミットされた BLOB にすることができます。In version 2012-02-12 and later, the source for a Copy Blob operation can be a committed blob in any Azure storage account.

バージョン 2015-02-21 以降、Copy Blob操作のソースは、任意の Azure ストレージ アカウント内の Azure ファイルにすることができます。Beginning with version 2015-02-21, the source for a Copy Blob operation can be an Azure file in any Azure storage account.

注意

2012 年 6 月 7 日以降に作成されたストレージ アカウントについてのみ、Copy Blob 操作による他のストレージ アカウントからのコピーが許可されています。Only storage accounts created on or after June 7th, 2012 allow the Copy Blob operation to copy from another storage account.

RequestRequest

Copy Blob 要求の構成は次のとおりです。The Copy Blob request may be constructed as follows. HTTPS が推奨されます。HTTPS is recommended. myaccount をストレージ アカウントの名前で、mycontainer をコンテナーの名前で、myblob をコピー先 BLOB の名前でそれぞれ置き換えます。Replace myaccount with the name of your storage account, mycontainer with the name of your container, and myblob with the name of your destination blob.

バージョン 2013-08-15 以降では、ソース BLOB と同じアカウントにある場合は、ターゲット BLOB の共有アクセス署名を指定できます。Beginning with version 2013-08-15, you may specify a shared access signature for the destination blob if it is in the same account as the source blob. バージョン 2015-04-05 以降では、別のストレージ アカウントにある場合は、ターゲット BLOB の共有アクセス署名を指定することもできます。Beginning with version 2015-04-05, you may also specify a shared access signature for the destination blob if it is in a different storage account.

PUT メソッド要求の URIPUT Method Request URI HTTP バージョンHTTP Version
https://myaccount.blob.core.windows.net/mycontainer/myblob HTTP/1.1HTTP/1.1

エミュレートされたストレージ サービスの URIEmulated storage service URI

エミューレートされたストレージ サービスに対する要求では、エミュレーターのホスト名と BLOB Service ポートを 127.0.0.1:10000 と指定し、その後にエミューレートされたストレージ アカウント名を指定します。When making a request against the emulated storage service, specify the emulator hostname and Blob service port as 127.0.0.1:10000, followed by the emulated storage account name:

PUT メソッド要求の URIPUT Method Request URI HTTP バージョンHTTP Version
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob HTTP/1.1HTTP/1.1

詳細については、「 Azure ストレージ エミュレーターを開発およびテストに使用する」を参照してください。For more information, see Using the Azure Storage Emulator for Development and Testing.

URI パラメーターURI parameters

次の追加パラメーターを要求の URI で指定できます。The following additional parameters may be specified on the request URI.

パラメーターParameter 説明Description
timeout 省略可能。Optional. timeout パラメーターは、秒単位で表されます。The timeout parameter is expressed in seconds. 詳細については、「BLOB サービス操作のタイムアウトの設定」を参照してください。For more information, see Setting Timeouts for Blob Service Operations.

要求ヘッダーRequest Headers

必須要求ヘッダーと省略可能な要求ヘッダーを次の表に示します。The following table describes required and optional request headers.

要求ヘッダーRequest Header 説明Description
Authorization 必須。Required. 承認スキーム、アカウント名、および署名を指定します。Specifies the authorization scheme, account name, and signature. 詳細については、「Azure ストレージへの要求の承認」を参照してください。For more information, see Authorize requests to Azure Storage.
Date または x-ms-dateDate or x-ms-date 必須。Required. 要求に対して協定世界時 (UTC) を指定します。Specifies the Coordinated Universal Time (UTC) for the request. 詳細については、「Azure ストレージへの要求の承認」を参照してください。For more information, see Authorize requests to Azure Storage.
x-ms-version すべての許可された要求に必要です。Required for all authorized requests. 詳細については、「 Azure ストレージ サービスのバージョン管理」を参照してください。For more information, see Versioning for the Azure Storage Services.
x-ms-meta-name:value 省略可能。Optional. BLOB に関連付けられたユーザー定義の名前と値のペアを指定します。Specifies a user-defined name-value pair associated with the blob. 名前と値のペアが指定されていない場合、操作は、ソース BLOB またはファイルからコピー先の BLOB にメタデータをコピーします。If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. 1 つ以上の名前と値のペアが指定されている場合、指定されたメタデータを使用してターゲット BLOB が作成され、メタデータはソース BLOB またはファイルからコピーされません。If one or more name-value pairs are specified, the destination blob is created with the specified metadata, and metadata is not copied from the source blob or file.

バージョン 2009-09-19 以降では、メタデータ名はC# 識別子の名前付け規則に従う必要があります。Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. 詳細については、「コンテナー、BLOB、およびメタデータの名前付けと参照」を参照してください。See Naming and Referencing Containers, Blobs, and Metadata for more information.
x-ms-source-if-modified-since 省略可能。Optional. DateTime 値です。A DateTime value. この条件ヘッダーを指定すると、コピー元 BLOB が指定した日付/時刻以降に変更された場合にのみ BLOB がコピーされます。Specify this conditional header to copy the blob only if the source blob has been modified since the specified date/time. コピー元 BLOB が変更されていない場合、BLOB サービスはステータス コード 412 (Precondition Failed) を返します。If the source blob has not been modified, the Blob service returns status code 412 (Precondition Failed). ソースが Azure ファイルの場合、このヘッダーは指定できません。This header cannot be specified if the source is an Azure File.
x-ms-source-if-unmodified-since 省略可能。Optional. DateTime 値です。A DateTime value. この条件ヘッダーを指定すると、コピー元 BLOB が指定した日付/時刻以降に変更されなかった場合にのみ BLOB がコピーされます。Specify this conditional header to copy the blob only if the source blob has not been modified since the specified date/time. コピー元 BLOB が変更されている場合、BLOB Service はステータス コード 412 (Precondition Failed) を返します。If the source blob has been modified, the Blob service returns status code 412 (Precondition Failed). ソースが Azure ファイルの場合、このヘッダーは指定できません。This header cannot be specified if the source is an Azure File.
x-ms-source-if-match 省略可能。Optional. ETag 値。An ETag value. この条件ヘッダーを指定すると、ETag が指定した値に一致する場合にのみコピー元 BLOB がコピーされます。Specify this conditional header to copy the source blob only if its ETag matches the value specified. ETag 値が一致しない場合、BLOB サービスはステータス コード 412 (Precondition Failed) を返します。If the ETag values do not match, the Blob service returns status code 412 (Precondition Failed). ソースが Azure ファイルの場合、このヘッダーは指定できません。This header cannot be specified if the source is an Azure File.
x-ms-source-if-none-match 省略可能。Optional. ETag 値。An ETag value. この条件ヘッダーを指定すると、ETag が指定した値に一致しない場合にのみ BLOB がコピーされます。Specify this conditional header to copy the blob only if its ETag does not match the value specified. 値が一致する場合、BLOB Service はステータス コード 412 (Precondition Failed) を返します。If the values are identical, the Blob service returns status code 412 (Precondition Failed). ソースが Azure ファイルの場合、このヘッダーは指定できません。This header cannot be specified if the source is an Azure File.
If-Modified-Since 省略可能。Optional. DateTime 値です。A DateTime value. この条件ヘッダーを指定すると、コピー先 BLOB が指定した日付/時刻以降に変更された場合にのみ BLOB がコピーされます。Specify this conditional header to copy the blob only if the destination blob has been modified since the specified date/time. コピー先 BLOB が変更されていない場合、BLOB Service はステータス コード 412 (Precondition Failed) を返します。If the destination blob has not been modified, the Blob service returns status code 412 (Precondition Failed).
If-Unmodified-Since 省略可能。Optional. DateTime 値です。A DateTime value. この条件ヘッダーを指定すると、コピー先 BLOB が指定した日付/時刻以降に変更されなかった場合にのみ BLOB がコピーされます。Specify this conditional header to copy the blob only if the destination blob has not been modified since the specified date/time. コピー先 BLOB が変更されている場合、BLOB サービスはステータス コード 412 (Precondition Failed) を返します。If the destination blob has been modified, the Blob service returns status code 412 (Precondition Failed).
If-Match 省略可能。Optional. ETag 値。An ETag value. この条件ヘッダーの ETag 値を指定すると、指定した ETag 値が既存のコピー先 BLOB の ETag 値に一致する場合にのみ BLOB がコピーされます。Specify an ETag value for this conditional header to copy the blob only if the specified ETag value matches the ETag value for an existing destination blob. コピー先 BLOB の ETag が If-Match に指定した ETag と一致しない場合、BLOB Service はステータス コード 412 (Precondition Failed) を返します。If the ETag for the destination blob does not match the ETag specified for If-Match, the Blob service returns status code 412 (Precondition Failed).
If-None-Match 省略可能。Optional. ETag 値またはワイルドカード文字 (*)。An ETag value, or the wildcard character (*).

この条件ヘッダーの ETag 値を指定すると、指定した ETag 値がコピー先 BLOB の ETag 値に一致しない場合にのみ BLOB がコピーされます。Specify an ETag value for this conditional header to copy the blob only if the specified ETag value does not match the ETag value for the destination blob.

ターゲット BLOB が*存在しない場合にのみ、操作を実行するワイルドカード文字 ( ) を指定します。Specify the wildcard character (*) to perform the operation only if the destination blob does not exist.

指定した条件を満たしていない場合、BLOB サービスはステータス コード 412 (Precondition Failed) を返します。If the specified condition isn't met, the Blob service returns status code 412 (Precondition Failed).
x-ms-copy-source:name 必須。Required. ソース BLOB またはファイルの名前を指定します。Specifies the name of the source blob or file.

バージョン 2012-02-12 以降、この値は、BLOB を指定する長さが最大 2 KB の URL である場合があります。Beginning with version 2012-02-12, this value may be a URL of up to 2 KB in length that specifies a blob. この値は要求 URI に含まれるため、URL でエンコードされる必要があります。The value should be URL-encoded as it would appear in a request URI. 同じストレージ アカウントのソース BLOB は、共有キーを使用して承認できます。A source blob in the same storage account can be authorized via Shared Key. ただし、ソースが別のアカウントの BLOB である場合、ソース BLOB はパブリックであるか、共有アクセス署名を使用して承認されている必要があります。However, if the source is a blob in another account, the source blob must either be public or must be authorized via a shared access signature. ソース BLOB がパブリックの場合、コピー操作を実行するための承認は必要ありません。If the source blob is public, no authorization is required to perform the copy operation.

バージョン 2015-02-21 以降、ソース オブジェクトは Azure File サービス内のファイルである可能性があります。Beginning with version 2015-02-21, the source object may be a file in the Azure File service. ソース オブジェクトが BLOB にコピーされるファイルである場合、ソース ファイルは、同じアカウントまたは別のアカウントに存在するかどうかに関係なく、共有アクセス署名を使用して承認する必要があります。If the source object is a file that is to be copied to a blob, then the source file must be authorized using a shared access signature, whether it resides in the same account or in a different account.

2012 年 6 月 7 日以降に作成されたストレージ アカウントについてのみ、Copy Blob 操作による他のストレージ アカウントからのコピーが許可されています。Only storage accounts created on or after June 7th, 2012 allow the Copy Blob operation to copy from another storage account.

ソース オブジェクトの URL の例を次に示します。Here are some examples of source object URLs:

- https://myaccount.blob.core.windows.net/mycontainer/myblob
- https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>

ソース オブジェクトが Azure File サービスのファイルの場合、ソース URL は次の形式を使用します。URL には、ファイルの有効な SAS トークンが含まれている必要があります。When the source object is a file in the Azure File service, the source URL uses the following format; note that the URL must include a valid SAS token for the file:

- https://myaccount.file.core.windows.net/myshare/mydirectorypath/myfile?sastoken

2012-02-12 より前のバージョンでは、同じアカウント内でのみ BLOB をコピーできます。コピー元の名前で使用できる形式は次のとおりです。In versions before 2012-02-12, blobs can only be copied within the same account, and a source name can use these formats:

- 名前付きコンテナー内の BLOB:/accountName/containerName/blobName- Blob in named container: /accountName/containerName/blobName
- 名前付きコンテナのスナップショット:/accountName/containerName/blobName?snapshot=<DateTime>- Snapshot in named container: /accountName/containerName/blobName?snapshot=<DateTime>
- ルート コンテナー内の BLOB:/accountName/blobName- Blob in root container: /accountName/blobName
- ルートコンテナのスナップショット:/accountName/blobName?snapshot=<DateTime>- Snapshot in root container: /accountName/blobName?snapshot=<DateTime>
x-ms-lease-id:<ID> コピー先 BLOB にアクティブなリースが存在する場合は必須です。Required if the destination blob has an active lease. このヘッダーに指定するリース ID は、コピー先 BLOB のリース ID と一致している必要があります。The lease ID specified for this header must match the lease ID of the destination blob. 要求にリース ID が含まれていないか、リース ID が無効な場合、操作はステータス コード 412 (Precondition Failed) で失敗します。If the request does not include the lease ID or it is not valid, the operation fails with status code 412 (Precondition Failed).

このヘッダーを指定すると、コピー先 BLOB に現在アクティブなリースが存在しない場合にも、操作はステータス コード 412 (Precondition Failed) で失敗します。If this header is specified and the destination blob does not currently have an active lease, the operation will also fail with status code 412 (Precondition Failed).

バージョン 2012-02-12 以降では、この値では、アクティブな無限リースを、リースされた BLOB に対して指定する必要があります。In version 2012-02-12 and newer, this value must specify an active, infinite lease for a leased blob. 期間が有限のリース ID は 412 (Precondition Failed) で失敗します。A finite-duration lease ID fails with 412 (Precondition Failed).
x-ms-source-lease-id: <ID> 2012-02-12 より前のバージョンでは省略可能 (2012-02-12 以降ではサポートされていません)。Optional, versions before 2012-02-12 (unsupported in 2012-02-12 and newer). このヘッダーを指定すると、指定されたリース ID がコピー元 BLOB のアクティブなリース ID と一致する場合にのみ、Copy Blob 操作が実行されます。Specify this header to perform the Copy Blob operation only if the lease ID given matches the active lease ID of the source blob.

このヘッダーを指定すると、コピー元 BLOB に現在アクティブなリースが存在しない場合にも、操作はステータス コード 412 (Precondition Failed) で失敗します。If this header is specified and the source blob does not currently have an active lease, the operation will also fail with status code 412 (Precondition Failed).
x-ms-client-request-id 省略可能。Optional. ストレージ解析ロギングが有効なときに解析ログに記録される、クライアントで生成された非透過の値を 1 KB の文字制限付きで提供します。Provides a client-generated, opaque value with a 1 KB character limit that is recorded in the analytics logs when storage analytics logging is enabled. クライアント側のアクティビティをサーバーが受信した要求と関連付けるには、このヘッダーを使用することが強く推奨されます。Using this header is highly recommended for correlating client-side activities with requests received by the server. 詳細については、「ストレージ分析のログと Azure ログ: ログを使用したストレージ要求の追跡」を参照してください。For more information, see About Storage Analytics Logging and Azure Logging: Using Logs to Track Storage Requests.
x-ms-access-tier 省略可能。Optional. ターゲット BLOB に設定する層を指定します。Specifies the tier to be set on the target blob. プレミアムアカウントのページ BLOB の場合は、バージョン 2017-04-17 以降のみ。For page blobs on a premium account only with version 2017-04-17 and newer. サポートされている階層の完全なリストについては、VM の高パフォーマンス Premium Storage と管理ディスクを確認してください。Check High-performance Premium Storage and managed disks for VMs for a full list of supported tiers. ブロック BLOB のバージョン 2018-11-09 以降。Version 2018-11-09 and newer for Block blobs. ブロック BLOB の階層化は、BLOB ストレージまたは汎用 v2 アカウントHot/Cool/Archiveでサポートされており、有効な値は です。Block blob tiering is supported on blob storage or general purpose v2 accounts, valid values are Hot/Cool/Archive. ブロック BLOB の階層化の詳細については、「ホット、クール、およびアーカイブのストレージ層」を参照してください。For detailed information about block blob tiering see Hot, cool and archive storage tiers. CopyBlob を使用してブロック BLOB 層を設定することはプレビュー段階です。Setting block blob tier with CopyBlob is in preview.
x-ms-rehydrate-priority 省略可能。Optional. アーカイブされた BLOB を再ハイドレートする優先順位を示します。Indicates the priority with which to rehydrate an archived blob. ブロック BLOB のバージョン 2019-02-02 以降でサポートされています。Supported on version 2019-02-02 and newer for Block blobs. 有効な値High/Standardは です。Valid values are High/Standard. 優先順位は、BLOB に 1 回だけ設定できます。The priority can be set on a blob only once. このヘッダーは、同じ BLOB に対する後続の要求では無視されます。This header will be ignored on subsequent requests to the same blob. このヘッダーを含まない既定Standardの優先順位は です。Default priority without this header is Standard. コピーブロブで優先度を設定することはプレビュー段階です。Setting priority with CopyBlob is in preview.

要求本文Request Body

[なし] :None.

ResponseResponse

応答には、HTTP 状態コードおよび一連の応答ヘッダーが含まれています。The response includes an HTTP status code and a set of response headers.

状態コードStatus Code

バージョン 2012-02-12 以降では、操作が正常に終了すると、ステータス コード 202 (Accepted) が返されます。In version 2012-02-12 and newer, a successful operation returns status code 202 (Accepted).

2012-02-12 より前のバージョンでは、操作が正常に終了すると、ステータス コード 201 (Created) が返されます。In versions before 2012-02-12, a successful operation returns status code 201 (Created).

ステータス コードの詳細については、ステータス コードとエラー コードを参照してください。For information about status codes, see Status and Error Codes.

レスポンス ヘッダーResponse Headers

この操作の応答には、次のヘッダーが含まれています。The response for this operation includes the following headers. 応答に追加の標準 HTTP ヘッダーが含まれる場合もあります。The response may also include additional standard HTTP headers. すべての標準ヘッダーはHTTP/1.1 プロトコル仕様に準拠しています。All standard headers conform to the HTTP/1.1 protocol specification.

応答ヘッダーResponse header 説明Description
ETag バージョン 2012-02-12 以降では、コピーが完了すると、コピー先 BLOB の ETag が含まれます。In version 2012-02-12 and newer, if the copy is complete, contains the ETag of the destination blob. コピーが完了していない場合は、コピーの開始時に作成された空の BLOB の ETag が含まれます。If the copy isn’t complete, contains the ETag of the empty blob created at the start of the copy.

2012-02-12 より前のバージョンでは、コピー先 BLOB の ETag が返されます。In versions before 2012-02-12, returns the ETag for the destination blob.

バージョン 2011-08-18 以降では、ETag 値は引用符で囲まれます。In version 2011-08-18 and newer, the ETag value will be in quotes.
Last-Modified コピー先 BLOB へのコピー操作が完了した日付/時刻が返されます。Returns the date/time that the copy operation to the destination blob completed.
x-ms-request-id このヘッダーは要求を一意に識別するので、要求のトラブルシューティングに使用できます。This header uniquely identifies the request that was made and can be used for troubleshooting the request. 詳細については、「API オペレーションのトラブルシューティング」を参照してください。For more information, see Troubleshooting API Operations.
x-ms-version 要求の実行に使用する BLOB サービスのバージョンを示します。Indicates the version of the Blob service used to execute the request. このヘッダーはバージョン 2009-09-19 以降で行った要求に対して返されます。This header is returned for requests made against version 2009-09-19 and later.
Date サービスによって生成される、応答の開始時刻を示す UTC 日付/時刻値。A UTC date/time value generated by the service that indicates the time at which the response was initiated.
x-ms-copy-id: <id> バージョン 2012-02-12 以降。Version 2012-02-12 and newer. このコピー操作の文字列の識別子。String identifier for this copy operation. Get Blob または Get Blob Properties と一緒に使用してこのコピー操作のステータスを確認するか、Abort Copy Blob に渡して保留中のコピーを中止します。Use with Get Blob or Get Blob Properties to check the status of this copy operation, or pass to Abort Copy Blob to abort a pending copy.
x-ms-copy-status: <success &#124; pending> バージョン 2012-02-12 以降。Version 2012-02-12 and newer. コピー操作の状態。次の値を使用できます。State of the copy operation, with these values:

- success: コピーが正常に完了しました。- success: the copy completed successfully.
- pending: コピーは進行中です。- pending: the copy is in progress.
x-ms-client-request-id このヘッダーは、要求と対応する応答のトラブルシューティングに使用できます。This header can be used to troubleshoot requests and corresponding responses. このヘッダーの値は、要求内に存在し、x-ms-client-request-idその値が 1024 文字の可視 ASCII 文字である場合、ヘッダーの値と等しくなります。The value of this header is equal to the value of the x-ms-client-request-id header if it is present in the request and the value is at most 1024 visible ASCII characters. 要求にx-ms-client-request-idヘッダーが存在しない場合、このヘッダーは応答に存在しません。If the x-ms-client-request-id header is not present in the request, this header will not be present in the response.

応答本文Response Body

[なし] :None.

応答のサンプルSample Response

次に示すのは、BLOB コピー要求に対する応答の例です。The following is a sample response for a request to copy a blob:

Response Status:  
HTTP/1.1 202 Accepted  
  
Response Headers:   
Last-Modified: <date>   
ETag: "0x8CEB669D794AFE2"  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  
x-ms-request-id: cc6b209a-b593-4be1-a38a-dde7c106f402  
x-ms-version: 2015-02-21  
x-ms-copy-id: 1f812371-a41d-49e6-b123-f4b542e851c5  
x-ms-copy-status: pending  
Date: <date>  
  

承認Authorization

この操作は、アカウント所有者が呼び出すことができます。This operation can be called by the account owner. バージョン 2013-08-15 以降に対する要求の場合、同じアカウント内でのコピー操作では、コピー先 BLOB またはコンテナーへの書き込みアクセス許可がある共有アクセス署名がサポートされます。For requests made against version 2013-08-15 and later, a shared access signature that has permission to write to the destination blob or its container is supported for copy operations within the same account. 要求に対して指定した共有アクセス署名はコピー先 BLOB にのみ適用されることに注意してください。Note that the shared access signature specified on the request applies only to the destination blob.

ソース BLOB またはファイルへのアクセスは、要求ヘッダーx-ms-copy-sourceの詳細に記載されているように個別に承認されます。Access to the source blob or file is authorized separately, as described in the details for the request header x-ms-copy-source.

次の表は、コピー BLOB 操作のコピー先オブジェクトとソース オブジェクトを承認する方法を示しています。The following table describes how the destination and source objects for a Copy Blob operation may be authorized.

共有キー/共有キー ライトによる承認Authorization with Shared Key/Shared Key Lite 共有アクセス署名による承認Authorization with Shared Access Signature 権限を必要としないパブリック オブジェクトPublic Object Not Requiring Authorization
デスティネーションブロブDestination blob はいYes はいYes いいえNo
同じアカウントのソース BLOBSource blob in same account はいYes はいYes はいYes
別のアカウントのソース BLOBSource blob in another account いいえNo はいYes はいYes
同じアカウントまたは別のアカウントのソース ファイルSource file in the same account or another account いいえNo はいYes 該当なしN/A

解説Remarks

バージョン 2012-02-12 以降では、Copy Blob 操作は非同期的に実行できます。In version 2012-02-12 and newer, the Copy Blob operation can complete asynchronously. この操作は、コピー操作のチェックまたは中止に使用できるコピー ID を返します。This operation returns a copy ID you can use to check or abort the copy operation. BLOB サービスは、ベストエフォート方式で BLOB をコピーします。The Blob service copies blobs on a best-effort basis.

コピー操作のソース BLOB は、ブロック BLOB、追加 BLOB、ページ BLOB、またはスナップショットです。The source blob for a copy operation may be a block blob, an append blob, or a page blob, or a snapshot. コピー先 BLOB が既に存在する場合、コピー元 BLOB と同じ BLOB の種類である必要があります。If the destination blob already exists, it must be of the same blob type as the source blob. 既存のコピー先 BLOB はすべて上書きされます。Any existing destination blob will be overwritten. コピー先 BLOB は、コピー操作の進行中は変更できません。The destination blob cannot be modified while a copy operation is in progress.

バージョン 2015-02-21 以降では、コピー操作のソースは Azure File サービス内のファイルである可能性もあります。In version 2015-02-21 and newer, the source for the copy operation may also be a file in the Azure File service. ソースがファイルの場合、送り先はブロック BLOB でなければなりません。If the source is a file, the destination must be a block blob.

アカウント内に保留中の Copy Blob 操作が複数ある場合、これらの操作は順番に処理されます。Multiple pending Copy Blob operations within an account might be processed sequentially. コピー先 BLOB には、未完了の BLOB コピー操作は 1 つしか存在できません。A destination blob can only have one outstanding copy blob operation. つまり、BLOB を、複数の保留 Copy Blob 操作のコピー先にすることはできません。In other words, a blob cannot be the destination for multiple pending Copy Blob operations. 保留中のコピーが既に含まれるコピー先 BLOB に対して Copy Blob を試みると、ステータス コード 409 (Conflict) で失敗します。An attempt to Copy Blob to a destination blob that already has a copy pending fails with status code 409 (Conflict).

2012 年 6 月 7 日以降に作成されたストレージ アカウントについてのみ、Copy Blob 操作による他のストレージ アカウントからのコピーが許可されています。Only storage accounts created on or after June 7th, 2012 allow the Copy Blob operation to copy from another storage account. 別のストレージ アカウントから、2012 年 6 月 7 日より前に作成されたアカウントにコピーしようとすると、ステータス コード 400 (Bad Request) で失敗します。An attempt to copy from another storage account to an account created before June 7th, 2012 fails with status code 400 (Bad Request).

このCopy Blob操作では、常にソース BLOB またはファイル全体がコピーされます。バイト範囲またはブロックのセットのコピーはサポートされていません。The Copy Blob operation always copies the entire source blob or file; copying a range of bytes or set of blocks is not supported.

Copy Blob 操作は、次の方法で使用できます。A Copy Blob operation can take any of the following forms:

  • コピー元 BLOB は別の名前でコピー先 BLOB にコピーできます。You can copy a source blob to a destination blob with a different name. コピー先 BLOB は、同じ BLOB の種類 (ブロック、アペンド、またはページ) の既存の BLOB でも、コピー操作によって作成される新しい BLOB でもかまいません。The destination blob can be an existing blob of the same blob type (block, append, or page), or can be a new blob created by the copy operation.

  • コピー元 BLOB を同じ名前でコピー先 BLOB にコピーして、コピー先 BLOB を実質的に置き換えることができます。You can copy a source blob to a destination blob with the same name, effectively replacing the destination blob. この方法でコピー操作を実行すると、コミットされていないブロックは削除され、BLOB のメタデータは上書きされます。Such a copy operation removes any uncommitted blocks and overwrites the blob's metadata.

  • Azure File Service 内のコピー元ファイルをコピー先 BLOB にコピーできます。You can copy a source file in the Azure File service to a destination blob. コピー先 BLOB は、既存のブロック BLOB でも、コピー操作によって作成される新しいブロック BLOB でもかまいません。The destination blob can be an existing block blob, or can be a new block blob created by the copy operation. ファイルからページ BLOB またはアペンド BLOB へのコピーはサポートされていません。Copying from files to page blobs or append blobs is not supported.

  • スナップショットをベース BLOB にコピーします。You can copy a snapshot over its base blob. スナップショットをベース BLOB に昇格することにより、BLOB を以前のバージョンに復元できます。By promoting a snapshot to the position of the base blob, you can restore an earlier version of a blob.

  • スナップショットを別の名前でコピー先 BLOB にコピーします。You can copy a snapshot to a destination blob with a different name. 結果として得られるコピー先 BLOB は書き込み可能な BLOB であり、スナップショットではありません。The resulting destination blob is a writeable blob and not a snapshot.

ページ BLOB からコピーする場合、BLOB サービスでは、コピー元 BLOB の長さでコピー先ページ BLOB が作成されます。これは最初はすべてゼロになっています。When copying from a page blob, the Blob service creates a destination page blob of the source blob’s length, initially containing all zeroes. その後、コピー元ページの範囲が列挙され、空以外の範囲がコピーされます。Then the source page ranges are enumerated, and non-empty ranges are copied.

ブロック BLOB または追加 BLOB の場合、BLOB サービスは、この操作から戻る前に、長さがゼロのコミット済み BLOB を作成します。For a block blob or an append blob, the Blob service creates a committed blob of zero length before returning from this operation.

ブロック BLOB からコピーする場合、コミットされたすべてのブロックとそのブロック ID がコピーされます。When copying from a block blob, all committed blocks and their block IDs are copied. コミットされていないブロックはコピーされません。Uncommitted blocks are not copied. コピー操作の終了時に、コピー先の BLOB は、ソースと同じコミット済みブロック数を持つことになります。At the end of the copy operation, the destination blob will have the same committed block count as the source.

追加の BLOB からコピーする場合、コミットされたすべてのブロックがコピーされます。When copying from an append blob, all committed blocks are copied. コピー操作の終了時に、コピー先の BLOB は、ソースと同じコミット済みブロック数を持つことになります。At the end of the copy operation, the destination blob will have the same committed block count as the source.

すべての BLOB タイプGet Blob``Get Blob Propertiesについて、コピー操作の状態を確認するために、またはコピー先の BLOB を呼び出すことができます。For all blob types, you can call Get Blob or Get Blob Properties on the destination blob to check the status of the copy operation. コピーが完了すると、最終 BLOB がコミットされます。The final blob will be committed when the copy completes.

コピー操作のコピー元によって ETag が指定されている場合、コピー中にコピー元が変更されると、コピーは失敗します。When the source of a copy operation provides ETags, if there are any changes to the source while the copy is in progress, the copy will fail. コピー中にコピー先 BLOB を変更しようとすると、409 (Conflict) で失敗します。An attempt to change the destination blob while a copy is in progress will fail with 409 Conflict. コピー先 BLOB に無限リースがある場合、リース ID を Copy Blob に渡す必要があります。If the destination blob has an infinite lease, the lease ID must be passed to Copy Blob. 期間が有限のリースは許可されていません。Finite-duration leases are not allowed.

ブロック BLOB の ETag は、Copy Blob 操作の開始時およびコピーの終了時に変更されます。The ETag for a block blob changes when the Copy Blob operation is initiated and when the copy finishes. ページ BLOB の ETag は、Copy Blob 操作の開始時に変更されます。また、コピー中も引き続き頻繁に変更されます。The ETag for a page blob changes when the Copy Blob operation is initiated, and continues to change frequently during the copy. ブロック BLOB の内容は、完全なコピーの完了後、GET でのみ表示できます。The contents of a block blob are only visible using a GET after the full copy completes.

BLOB のプロパティおよびメタデータのコピーCopying Blob Properties and Metadata

BLOB をコピーすると、次のシステム プロパティが同じ値でコピー先 BLOB にコピーされます。When a blob is copied, the following system properties are copied to the destination blob with the same values:

  • Content-Type

  • Content-Encoding

  • Content-Language

  • Content-Length

  • Cache-Control

  • Content-MD5

  • Content-Disposition

  • x-ms-blob-sequence-number (for page blobs only)

  • x-ms- committed-block-count (for append blobs only, and for version 2015-02-21 only)

ブロック BLOB の場合、コピー元 BLOB のコミットされたブロック リストもコピー先 BLOB にコピーされます。The source blob's committed block list is also copied to the destination blob, if the blob is a block blob. コミット前のブロックはコピーされません。Any uncommitted blocks are not copied.

コピー先 BLOB のサイズは常にコピー元 BLOB と同じであるため、コピー先 BLOB の Content-Length ヘッダーの値はコピー元 BLOB の値と一致します。The destination blob is always the same size as the source blob, so the value of the Content-Length header for the destination blob matches that for the source blob.

コピー元 BLOB とコピー先 BLOB が同じである場合、Copy Blob を実行すると、コミット前のブロックが削除されます。When the source blob and destination blob are the same, Copy Blob removes any uncommitted blocks. この場合、メタデータが指定されていると、既存のメタデータは新しいメタデータで上書きされます。If metadata is specified in this case, the existing metadata is overwritten with the new metadata.

リースされた BLOB のコピーCopying a Leased Blob

Copy Blob 操作はコピー元 BLOB からのみ読み取りを行うので、コピー元 BLOB のリース状態は重要ではありません。The Copy Blob operation only reads from the source blob so the lease state of the source blob does not matter. ただし、Copy Blob 操作では、コピーの開始時にコピー元 BLOB の ETag が保存されます。However, the Copy Blob operation saves the ETag of the source blob when the copy is initiated. コピーが完了する前に ETag 値が変更された場合、コピーは失敗します。If the ETag value changes before the copy completes, the copy fails. コピー元 BLOB が変更されないようにするには、コピー操作中にその BLOB をリースします。You can prevent changes to the source blob by leasing it during the copy operation.

コピー先 BLOB にアクティブな無限リースがある場合は、Copy Blob 操作への呼び出しで、そのリース ID を指定する必要があります。If the destination blob has an active infinite lease, you must specify its lease ID in the call to the Copy Blob operation. 期間が有限のアクティブなリースを指定した場合、この呼び出しは、ステータス コード 412 (Precondition Failed) で失敗します。If the lease you specify is an active finite-duration lease, this call fails with a status code 412 (Precondition Failed). コピーが保留中の場合、コピー先 BLOB のリース操作はステータス コード 409 (Conflict) で失敗します。While the copy is pending, any lease operation on the destination blob will fail with status code 409 (Conflict). コピー元 BLOB からコピー先 BLOB に別の名前でコピーする場合、コピー元 BLOB と同じ名前でコピー先 BLOB にコピーする場合、スナップショットをそのベース BLOB に昇格する場合のいずれでも、コピー先 BLOB の無限リースはこの方法でコピー操作中にロックされます。An infinite lease on the destination blob is locked in this way during the copy operation whether you are copying to a destination blob with a different name from the source, copying to a destination blob with the same name as the source, or promoting a snapshot over its base blob. まだ存在していない BLOB に対してクライアントがリース ID を指定した場合、BLOB サービスはバージョン 2013-08-15 以降に対する要求に対してはステータス コード 412 (Precondition Failed) を返します。それよりも前のバージョンでは、ステータス コード 201 (Created) を返します。If the client specifies a lease ID on a blob that does not yet exist, the Blob service will return status code 412 (Precondition Failed) for requests made against version 2013-08-15 and later; for prior versions the Blob service will return status code 201 (Created).

スナップショットのコピーCopying Snapshots

コピー元 BLOB をコピーしても、コピー元 BLOB のスナップショットはコピー先にコピーされません。When a source blob is copied, any snapshots of the source blob are not copied to the destination. コピー先 BLOB をコピーで上書きした場合、コピー先 BLOB に関連付けられたスナップショットは名前が変わっても元のままです。When a destination blob is overwritten with a copy, any snapshots associated with the destination blob stay intact under its name.

コピー操作を実行して、スナップショット BLOB をベース BLOB に昇格できます。You can perform a copy operation to promote a snapshot blob over its base blob. この方法により、BLOB を以前のバージョンに復元できます。In this way you can restore an earlier version of a blob. スナップショットは元のままで、スナップショットのコピー先が、読み取りおよび書き込みできるコピーで上書きされます。The snapshot remains, but its destination is overwritten with a copy that can be both read and written.

アーカイブ済み BLOB のコピー (バージョン 2018-11-09 以降)Copying Archived Blob (version 2018-11-09 and newer)

アーカイブされた BLOB は、同じストレージ アカウント内の新しい BLOB にコピーできます。An archived blob can be copied to a new blob within the same storage account. この場合も、最初にアーカイブされた BLOB はそのまま残ります。This will still leave the initially archived blob as is. アーカイブされた BLOB をソースとしてコピーする場合、要求には、x-ms-access-tierコピー先 BLOB の層を示すヘッダーが含まれている必要があります。When copying an archived blob as source the request must contain the header x-ms-access-tier indicating the tier of the destination blob. データは最終的にコピー先の BLOB にコピーされます。The data will be eventually copied to the destination blob.

コピー元とコピー先は、ソースがアーカイブされるときに同じストレージ アカウントである必要があります。The copy source and destination should be the same storage account when the source is archived. コピー元がまだリハイドレート状態が保留状態の場合、要求は Conflict で失敗します。The request will fail with Conflict if the source of the copy is still in pending rehydrate state.

ブロック BLOB レベルの階層化の詳細については、「ホット、クール、およびアーカイブのストレージ層」を参照してください。For detailed information about block blob level tiering see Hot, cool and archive storage tiers.

保留中のコピーの操作 (バージョン 2012-02-12 以降)Working with a Pending Copy (version 2012-02-12 and newer)

操作がCopy Blob非同期的にコピーを完了する場合は、次の表を使用して、 によって返されるCopy Blob状態コードに基づいて次のステップを決定します。If the Copy Blob operation completes the copy asynchronously, use the following table to determine the next step based on the status code returned by Copy Blob:

状態コードStatus Code 意味Meaning
202 (Accepted), x-ms-copy-status: success202 (Accepted), x-ms-copy-status: success コピーが正常に完了しました。Copy completed successfully.
202 (Accepted), x-ms-copy-status: pending202 (Accepted), x-ms-copy-status: pending コピーは完了していません。Copy has not completed. Get Blob Properties を使用してコピー先 BLOB をポーリングし、コピーが完了または失敗するまで x-ms-copy-status を調べます。Poll the destination blob using Get Blob Properties to examine the x-ms-copy-status until copy completes or fails.
4xx、500、または 5034xx, 500, or 503 コピーに失敗しました。Copy failed.

Copy Blob 操作の実行中および実行後、コピー先 BLOB のプロパティには、Copy Blob 操作のコピー ID とコピー元 BLOB の URL が含まれます。During and after a Copy Blob operation, the properties of the destination blob contain the copy ID of the Copy Blob operation and URL of the source blob. コピーが完了すると、BLOB サービスは、時間と結果の値 (successfailed、または aborted) をコピー先 BLOB のプロパティに書き込みます。When the copy completes, the Blob service writes the time and outcome value (success, failed, or aborted) to the destination blob properties. 操作が failed の場合、x-ms-copy-status-description ヘッダーには、エラー詳細の文字列が含まれます。If the operation failed, the x-ms-copy-status-description header contains an error detail string.

保留中の Copy Blob 操作は 2 週間でタイムアウトになります。A pending Copy Blob operation has a 2 week timeout. 2 週間経っても完了しなかったコピーの試行はタイムアウトになり、BLOB は空のままになります。また、x-ms-copy-status フィールドは failed に設定され、x-ms-copy-status-description は 500 (OperationCancelled) に設定されます。A copy attempt that has not completed after 2 weeks times out and leaves an empty blob with the x-ms-copy-status field set to failed and the x-ms-copy-status-description set to 500 (OperationCancelled). コピー中に断続的で致命的でないエラーが発生することで、コピーの進行が妨げられる可能性はありますが、これにより失敗することはありません。Intermittent, non-fatal errors that can occur during a copy might impede progress of the copy but not cause it to fail. このような場合は、x-ms-copy-status-description によって断続的なエラーが記述されます。In these cases, x-ms-copy-status-description describes the intermittent errors.

コピー中にコピー先 BLOB の変更を試行したり、コピー先 BLOB のスナップショットの作成を試行したりすると、409 (Conflict) Copy Blob in Progress で失敗します。Any attempt to modify or snapshot the destination blob during the copy will fail with 409 (Conflict) Copy Blob in Progress.

Abort Copy Blob 操作を呼び出すと、x-ms-copy-status:aborted ヘッダーが表示され、コピー先 BLOB には、長さ 0 バイトでそのままのメタデータが設定されます。If you call the Abort Copy Blob operation, you will see a x-ms-copy-status:aborted header and the destination blob will have intact metadata and a blob length of zero bytes. Copy Blob への元の呼び出しを繰り返すことで、再度コピーを試行できます。You can repeat the original call to Copy Blob to try the copy again.

操作がCopy Blob同期的に完了する場合は、次の表を使用してコピー操作の状態を確認します。If the Copy Blob operation completes synchronously, use the following table to determine the status of the copy operation:

状態コードStatus Code 意味Meaning
202 (Accepted), x-ms-copy-status: success202 (Accepted), x-ms-copy-status: success コピーが正常に完了しました。Copy completed successfully.
4xx、500、または 5034xx, 500, or 503 コピーに失敗しました。Copy failed.

Premium ストレージ階層の階層は継承されます。Tier is inherited for premium storage tiers. ブロック BLOB の場合、ターゲット BLOB を上書きすると、宛先から Hot/Cool 層が継承されます。For block blobs, overwriting the destination blob will inherit Hot/Cool tier from the destination. アーカイブされた BLOB の上書きは失敗します。Overwriting an archived blob will fail. ブロック BLOB レベルの階層化の詳細については、「ホット、クール、およびアーカイブのストレージ層」を参照してください。For detailed information about block blob level tiering see Hot, cool and archive storage tiers.

請求Billing

Copy Blob 操作のコピー先アカウントは、コピーを開始する 1 つのトランザクションに対して課金されます。中止の要求またはコピー操作のステータス要求ごとに 1 つのトランザクションが発生します。The destination account of a Copy Blob operation is charged for one transaction to initiate the copy, and also incurs one transaction for each request to abort or request the status of the copy operation.

コピー元 BLOB が別のアカウントにある場合は、コピー元アカウントでトランザクション コストが発生します。When the source blob is in another account, the source account incurs transaction costs. さらに、コピー元アカウントとコピー先アカウントの地域が異なる場合は (米国北部と米国南部など)、要求の転送に使用される帯域幅が、コピー元ストレージ アカウントに対して送信として課金されます。In addition, if the source and destination accounts reside in different regions (e.g., US North and US South), bandwidth used to transfer the request is charged to the source storage account as egress. 同じ地域内のアカウント間の送信は無料です。Egress between accounts within the same region is free.

コピー元 BLOB を、同じアカウント内の別の名前でコピー先 BLOB にコピーする場合は、新しい BLOB に対して追加ストレージ リソースを使用するため、これらの追加リソースによって使用されたストレージ アカウントの容量がコピー操作の課金対象になります。When you copy a source blob to a destination blob with a different name within the same account, you use additional storage resources for the new blob, so the copy operation results in a charge against the storage account’s capacity usage for those additional resources. ただし、同じアカウント内でコピー元 BLOB 名とコピー先 BLOB 名が同じ場合は (たとえば、スナップショットをベース BLOB に昇格する場合)、バージョン 2012-02-12 以降に格納された追加のコピー メタデータ以外では追加料金が発生しません。However, if the source and destination blob name are the same within the same account (for example, when you promote a snapshot to its base blob), no additional charge is incurred other than the extra copy metadata stored in version 2012-02-12 and newer.

スナップショットを昇格してベース BLOB を置き換えると、スナップショットとベース BLOB は同一になります。When you promote a snapshot to replace its base blob, the snapshot and base blob become identical. 両者間でブロックまたはページが共有されるため、コピー操作によってストレージ アカウントの容量使用に伴う追加料金は発生しません。They share blocks or pages, so the copy operation does not result in an additional charge against the storage account's capacity usage. スナップショットを別の名前でコピー先 BLOB にコピーする場合、新しい BLOB で使用されるストレージ リソースに対する追加料金が発生します。However, if you copy a snapshot to a destination blob with a different name, an additional charge is incurred for the storage resources used by the new blob that results. 名前が異なる 2 つの BLOB は、内容が同一であってもブロックまたはページを共有できません。Two blobs with different names cannot share blocks or pages even if they are identical. スナップショット コスト シナリオの詳細については、「スナップショットの発生料金について」を参照してください。For more information about snapshot cost scenarios, see Understanding How Snapshots Accrue Charges.

関連項目See also

Azure ストレージへの要求を承認する Authorize requests to Azure Storage
ステータスコードとエラーコード Status and Error Codes
BLOB サービスのエラー コード Blob Service Error Codes
スナップショットの発生料金の概要 Understanding How Snapshots Accrue Charges
BLOB のコピーを中止するAbort Copy Blob