Copie incrémentielle BLOBIncremental Copy Blob

L' Incremental Copy Blob opération copie un instantané de l’objet blob de pages source vers un objet blob de pages de destination.The Incremental Copy Blob operation copies a snapshot of the source page blob to a destination page blob. L’instantané est copié de telle sorte que seules les modifications différentielles entre l’instantané précédemment copié sont transférées vers la destination.The snapshot is copied such that only the differential changes between the previously copied snapshot are transferred to the destination. Les instantanés copiés sont des copies complètes de l’instantané d’origine et peuvent être lus ou copiés à partir de comme d’habitude.The copied snapshots are complete copies of the original snapshot and can be read or copied from as usual. Cette API est prise en charge depuis la version REST 2016-05-31.This API is supported since REST version 2016-05-31.

RequêteRequest

La demande Incremental Copy Blob peut être construite comme indiqué ci-dessous.The Incremental Copy Blob request may be constructed as follows. HTTPS est recommandé.HTTPS is recommended. Remplacez mon compte de stockage par le nom de votre compte de stockage, mycontainer par le nom de votre conteneur, et myblob par le nom de votre objet blob de destination.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. Le paramètre de requête COMP ayant la valeur incrementalcopy indique que cette demande consiste à créer un instantané incrémentiel :The comp query parameter with value of incrementalcopy indicates this request is to create an incremental snapshot:

URI de demande de la méthode PUTPUT Method Request URI Version HTTPHTTP Version
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=incrementalcopy HTTP/1.1HTTP/1.1

URI du service de stockage émuléEmulated storage service URI

Lorsque vous effectuez une requête sur le service de stockage émulé, spécifiez le nom d’hôte de l’émulateur et le port du service blob sous la forme 127.0.0.1:10000, suivi du nom du compte de stockage émulé.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. Indiquez également que cette requête est destinée à une copie incrémentielle en définissant le paramètre de requête COMP sur la valeur incrementalcopy :Also indicate that this request is for incremental copy by setting the comp query parameter to the value incrementalcopy:

URI de demande de la méthode PUTPUT Method Request URI Version HTTPHTTP Version
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=incrementalcopy HTTP/1.1HTTP/1.1

Pour plus d’informations, consultez utilisation de l’émulateur de stockage Azure pour le développement et le test.For more information, see Using the Azure Storage Emulator for Development and Testing.

Paramètres URIURI Parameters

Les paramètres supplémentaires suivants peuvent être spécifiés dans l'URI de la demande.The following additional parameters may be specified on the request URI.

ParamètreParameter DescriptionDescription
timeout facultatif.Optional. Le paramètre timeout est exprimé en secondes.The timeout parameter is expressed in seconds. Pour plus d’informations, consultez définition de délais d’attente pour les opérations de service BLOB.For more information, see Setting Timeouts for Blob Service Operations.

En-têtes de requêteRequest Headers

Le tableau suivant décrit les en-têtes de demande obligatoires ou facultatifs.The following table describes required and optional request headers.

En-tête de la demandeRequest Header DescriptionDescription
Authorization Obligatoire.Required. Spécifie le schéma d’autorisation, le nom de compte et la signature.Specifies the authorization scheme, account name, and signature. Pour plus d’informations, consultez autoriser les demandes dans le stockage Azure.For more information, see Authorize requests to Azure Storage.
Date ou x-ms-dateDate or x-ms-date Obligatoire.Required. Spécifie la date/heure en temps universel coordonné (UTC) pour la requête.Specifies the Coordinated Universal Time (UTC) for the request. Pour plus d’informations, consultez autoriser les demandes dans le stockage Azure.For more information, see Authorize requests to Azure Storage.
x-ms-version Obligatoire pour toutes les demandes autorisées, facultatif pour les demandes anonymes.Required for all authorized requests, optional for anonymous requests. Spécifie la version de l'opération à utiliser pour cette demande.Specifies the version of the operation to use for this request. Pour plus d’informations, consultez contrôle de version pour les services de stockage Azure.For more information, see Versioning for the Azure Storage Services.
If-Modified-Since facultatif.Optional. Valeur DateTime.A DateTime value. Spécifiez cet en-tête conditionnel pour copier l'objet blob uniquement si l'objet blob de destination a été modifié depuis la date/l'heure indiquées.Specify this conditional header to copy the blob only if the destination blob has been modified since the specified date/time. Si l'objet blob de destination n'a pas été modifié, le service BLOB retourne le code d'état 412 (Échec de la précondition).If the destination blob has not been modified, the Blob service returns status code 412 (Precondition Failed).
If-Unmodified-Since facultatif.Optional. Valeur DateTime.A DateTime value. Spécifiez cet en-tête conditionnel pour copier l'objet blob uniquement si l'objet blob de destination n'a pas été modifié depuis la date/l'heure indiquées.Specify this conditional header to copy the blob only if the destination blob has not been modified since the specified date/time. Si l'objet blob de destination a été modifié, le service BLOB retourne le code d'état 412 (Échec de la précondition).If the destination blob has been modified, the Blob service returns status code 412 (Precondition Failed).
If-Match facultatif.Optional. Spécifiez une valeur ETag.An ETag value. Spécifiez une valeur ETag pour cet en-tête conditionnel pour copier l’objet BLOB uniquement si la valeur ETag spécifiée correspond à la valeur ETag d’un objet blob de destination existant.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. Si l’ETag de l’objet blob de destination ne correspond pas à l’ETag spécifié pour If-Match, le service BLOB retourne le code d’État 412 (échec de la précondition).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 facultatif.Optional. Une valeur ETag, ou le caractère générique ( * ).An ETag value, or the wildcard character (*).

Spécifiez une valeur d'ETag pour cet en-tête conditionnel pour copier l'objet blob uniquement si la valeur d'ETag spécifiée ne correspond pas à la valeur d'ETag pour l'objet blob de destination.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.

Spécifiez le caractère générique ( * ) pour effectuer l’opération uniquement si l’objet blob de destination n’existe pas.Specify the wildcard character (*) to perform the operation only if the destination blob does not exist.

Si la condition spécifiée n'est pas remplie, le service BLOB retourne le code d'état 412 (Échec de la précondition).If the specified condition isn't met, the Blob service returns status code 412 (Precondition Failed).
x-ms-copy-source:name Obligatoire.Required. Spécifie le nom de l’instantané d’objet blob de pages source.Specifies the name of the source page blob snapshot.

Cette valeur est une URL d’une longueur maximale de 2 Kio qui spécifie un instantané d’objet blob de pages.This value is a URL of up to 2 KiB in length that specifies a page blob snapshot. La valeur doit être encodée sous forme d'URL, comme dans une URI de demande.The value should be URL-encoded as it would appear in a request URI. L’objet BLOB source doit être public ou être autorisé via une signature d’accès partagé.The source blob must either be public or must be authorized via a shared access signature. Voici un exemple d’URL d’objet BLOB source :Here is an example of a source blob URL:

https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
x-ms-client-request-id facultatif.Optional. Fournit une valeur opaque générée par le client avec une limite de 1 Kio de caractères qui est enregistrée dans les journaux d’analyse lorsque la journalisation de l’analyse de stockage est activée.Provides a client-generated, opaque value with a 1 KiB character limit that is recorded in the analytics logs when storage analytics logging is enabled. L’utilisation de cet en-tête est fortement recommandée pour la mise en corrélation des activités côté client avec les requêtes reçues par le serveur.Using this header is highly recommended for correlating client-side activities with requests received by the server. Pour plus d’informations, consultez à propos de la journalisation des Storage Analytics et de la journalisation Azure : utilisation des journaux pour suivre les demandes de stockage.For more information, see About Storage Analytics Logging and Azure Logging: Using Logs to Track Storage Requests.

Corps de la demandeRequest Body

Aucun.None.

responseResponse

La réponse comprend un code d’état HTTP, un ensemble d’en-têtes de réponse.The response includes an HTTP status code, a set of response headers.

Code d’étatStatus Code

Une opération réussie renvoie le code d'état 202 (Accepté).A successful operation returns status code 202 (Accepted).

Pour plus d’informations sur les codes d’État, consultez codes d’État et d’erreur.For information about status codes, see Status and Error Codes.

En-têtes de réponseResponse Headers

La réponse de l'opération inclut les en-têtes suivants.The response for this operation includes the following headers. La réponse peut aussi inclure des en-têtes HTTP standard supplémentaires.The response may also include additional standard HTTP headers. Tous les en-têtes standard sont conformes à la spécification du protocole HTTP/1.1.All standard headers conform to the HTTP/1.1 protocol specification.

SyntaxeSyntax DescriptionDescription
ETag L'ETag contient une valeur que vous pouvez utiliser pour exécuter des opérations conditionnellement.The ETag contains a value that you can use to perform operations conditionally. Pour plus d’informations, consultez Spécification d’en-têtes conditionnels pour les opérations de service BLOB.See Specifying Conditional Headers for Blob Service Operations for more information. La valeur ETag sera entre guillemets.The ETag value will be in quotes.
Last-Modified Date et heure de la dernière modification apportée à l'objet blob.The date/time that the blob was last modified. Le format de date est conforme à la RFC 1123.The date format follows RFC 1123. Pour plus d’informations, consultez représentation des valeurs de date/heure dans les en-têtes.For more information, see Representation of Date/Time Values in Headers.

Toute opération d'écriture dans l'objet blob (notamment les mises à jour des métadonnées ou des propriétés de l'objet blob), modifie la heure de la dernière modification de l'objet blob.Any write operation on the blob (including updates on the blob's metadata or properties) changes the last modified time of the blob.
x-ms-request-id Cet en-tête identifie de façon unique la demande qui a été effectuée et peut être utilisé pour résoudre les problèmes de la demande.This header uniquely identifies the request that was made and can be used for troubleshooting the request. Pour plus d’informations, consultez Troubleshooting API Operations.For more information, see Troubleshooting API Operations.
x-ms-version Indique la version du service BLOB utilisée pour exécuter la demande.Indicates the version of the Blob service used to execute the request.
Date Une valeur de date/heure UTC générée par le service qui indique le moment auquel la réponse a été initiée.A UTC date/time value generated by the service that indicates the time at which the response was initiated.
x-ms-copy-id: <id> Identificateur de chaîne pour cette opération de copie.String identifier for this copy operation. Utilisez avec les propriétés d’obtenir un objet BLOB pour vérifier l’état de cette opération de copie, ou transmettez-la pour abandonner la copie d’un objet BLOB afin d’abandonner une copie en attente.Use with 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: pending État de l’opération de copie.State of the copy operation. Il est toujours en attente pour indiquer que la copie a démarré et qu’elle est en cours.This is always pending to indicate that the copy has started and is in progress.
x-ms-client-request-id Cet en-tête peut être utilisé pour dépanner les demandes et les réponses correspondantes.This header can be used to troubleshoot requests and corresponding responses. La valeur de cet en-tête est égale à la valeur de l' x-ms-client-request-id en-tête si elle est présente dans la demande et que la valeur est supérieure à 1024 caractères ASCII visibles.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. Si l' x-ms-client-request-id en-tête n’est pas présent dans la demande, cet en-tête ne sera pas présent dans la réponse.If the x-ms-client-request-id header is not present in the request, this header will not be present in the response.

Corps de la réponseResponse Body

Aucun.None.

Exemple de réponseSample Response

Voici un exemple de réponse pour une demande d’exécution d’une copie incrémentielle :The following is a sample response for a request to perform an incremental copy:

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: 2016-05-31
x-ms-copy-id: 1f812371-a41d-49e6-b123-f4b542e851c5
x-ms-copy-status: pending
Date: <date> 

AutorisationAuthorization

Cette opération peut être appelée par le propriétaire du compte de destination ou par une signature d’accès partagé de l’objet blob de destination.This operation can be called by the destination account owner or with a shared access signature of the destination blob.

L’accès à l’objet BLOB ou au fichier source est autorisé séparément, comme décrit dans les détails de l’en-tête de requête 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.

RemarquesRemarks

La destination d’une copie incrémentielle ne doit pas exister ou doit avoir été créée avec une copie incrémentielle précédente à partir du même objet BLOB source.The destination of an incremental copy must either not exist, or must have been created with a previous incremental copy from the same source blob. Une fois créé, l’objet blob de destination est associé de manière permanente à la source et ne peut être utilisé que pour les copies incrémentielles.Once created, the destination blob is permanently associated with the source and may only be used for incremental copies. Les API d’extraction de propriétés et d’objets BLOB de liste d’objets BLOB indiquent si l’objet blob est un objet blob de copie incrémentielle créé de cette façon.The Get Blob Properties and List Blobs APIs indicate whether the blob is an incremental copy blob created in this way. Les objets BLOB de copie incrémentielle ne peuvent pas être téléchargés directement.Incremental copy blobs may not be downloaded directly. Les seules opérations prises en charge sont les propriétés d’objet BLOB, les objets BLOB de copie incrémentielle et les objets BLOB de suppression.The only supported operations are Get Blob Properties, Incremental Copy Blob, and Delete Blob. Les instantanés copiés peuvent être lus et supprimés comme d’habitude.The copied snapshots may be read and deleted as usual.

Une copie incrémentielle est exécutée de façon asynchrone sur le service et doit être interrogée pour terminer l’opération.An incremental copy is performed asynchronously on the service and must be polled for completion. Pour plus d’informations sur l’interrogation d’une copie en attente, consultez l’API Copy BLOB.See the Copy Blob API for details on how to poll a pending copy. Lorsque la copie est terminée, l’objet blob de destination contient un nouvel instantané.When the copy completes, the destination blob will contain a new snapshot. L’API d’extraction des propriétés de l’objet BLOB renvoie l’heure de l’instantané nouvellement créée.The Get Blob Properties API returns the snapshot time of the newly created snapshot.

La première fois qu’une copie incrémentielle est effectuée sur un objet blob de destination, un nouvel objet blob est créé avec une capture instantanée entièrement copiée à partir de la source.The first time an incremental copy is performed on a destination blob, a new blob is created with a snapshot that is fully copied from the source. Chaque appel suivant à l’objet blob de copie incrémentielle crée un nouvel instantané en copiant uniquement les modifications différentielles de l’instantané précédemment copié.Each subsequent call to Incremental Copy Blob will create a new snapshot by copying only the differential changes from the previously copied snapshot. Les modifications différentielles sont calculées sur le serveur en émettant un appel obtenir des plages de pages sur l’instantané d’objet BLOB source avec prevsnapshot défini sur l’instantané récemment copié.The differential changes are computed on the server by issuing a Get Page Ranges call on the source blob snapshot with prevsnapshot set to the most recently copied snapshot. Par conséquent, les mêmes restrictions sur la récupération des plages de pages s’appliquent à l’objet blob de copie incrémentielle.Therefore, the same restrictions on Get Page Ranges apply to Incremental Copy Blob. Plus précisément, les instantanés doivent être copiés dans l’ordre croissant et, si l’objet BLOB source est recréé à l’aide de l’objet put BLOB ou Copy BLOB, l’objet blob de copie incrémentielle sur les nouveaux instantanés échoue.Specifically, snapshots must be copied in ascending order and if the source blob is recreated using Put Blob or Copy Blob then Incremental Copy Blob on new snapshots will fail.

L’espace de stockage supplémentaire consommé par l’instantané copié correspond à la taille des données différentielles transférées pendant la copie.The additional storage space consumed by the copied snapshot is the size of the differential data transferred during the copy. Cela peut être déterminé en effectuant un appel d’API de plages de pages d’extraction différentielle sur la capture instantanée pour la comparer à l’instantané précédent.This can be determined by performing a differential Get Page Ranges API call on the snapshot to compare it to the previous snapshot.

Voir aussiSee also

Autoriser les demandes au stockage Azure Authorize requests to Azure Storage
Codes d’État et d’erreur Status and Error Codes
Définition de délais d'expiration pour les opérations du service BLOBSetting Timeouts for Blob Service Operations