Copy Blob From URLCopy Blob From URL

La Copy Blob From URL operación copia un BLOB en un destino en la cuenta de almacenamiento sincrónicamente para los tamaños de BLOB de origen hasta 256 MIB.The Copy Blob From URL operation copies a blob to a destination within the storage account synchronously for source blob sizes up to 256 MiB. Esta API está disponible a partir de la versión 2018-03-28.This API is available starting in version 2018-03-28.

El origen de una operación copiar BLOB de la dirección URL puede ser cualquier BLOB en bloques confirmado en cualquier cuenta de Azure Storage que sea pública o esté autorizada con una firma de acceso compartido.The source for a Copy Blob From URL operation can be any committed block blob in any Azure storage account which is either public or authorized with a shared access signature.

El tamaño del BLOB de origen puede ser una longitud máxima de hasta 256 MiB.The size of the source blob can be a maximum length of up to 256 MiB.

SolicitudRequest

La solicitud Copy Blob From URL se puede construir como sigue.The Copy Blob From URL request may be constructed as follows. Se recomienda HTTPS.HTTPS is recommended. Reemplace myaccount por el nombre de la cuenta de almacenamiento, mycontainer por el nombre del contenedor y myblob por el nombre del blob de destino.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.

URI de solicitud del método PUTPUT Method Request URI Versión HTTPHTTP Version
https://myaccount.blob.core.windows.net/mycontainer/myblob HTTP/1.1HTTP/1.1

URI del servicio de almacenamiento emuladoEmulated storage service URI

Al realizar una solicitud en el servicio de almacenamiento emulado, especifique el nombre de host del emulador y el puerto del servicio Blob como 127.0.0.1:10000, seguido del nombre de la cuenta de almacenamiento emulado: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:

URI de solicitud del método PUTPUT Method Request URI Versión HTTPHTTP Version
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob HTTP/1.1HTTP/1.1

Para obtener más información, vea uso del emulador de Azure Storage para desarrollo y pruebas.For more information, see Using the Azure Storage Emulator for Development and Testing.

Parámetros de URIURI parameters

Se pueden especificar los parámetros adicionales siguientes en el URI de solicitud.The following additional parameters may be specified on the request URI.

ParámetroParameter DescripciónDescription
timeout Opcional.Optional. El parámetro timeout se expresa en segundos.The timeout parameter is expressed in seconds. Para obtener más información, consulte configuración de tiempos de espera para las operaciones de BLOB Service.For more information, see Setting Timeouts for Blob Service Operations.

Encabezados de solicitudRequest Headers

En la tabla siguiente se describen los encabezados de solicitud requeridos y opcionales.The following table describes required and optional request headers.

Encabezado de solicitudRequest Header DescripciónDescription
Authorization Necesario.Required. Especifica el esquema de autorización, el nombre de cuenta y la firma.Specifies the authorization scheme, account name, and signature. Para obtener más información, consulte autorización de solicitudes para Azure Storage.For more information, see Authorize requests to Azure Storage.
Date o x-ms-dateDate or x-ms-date Necesario.Required. Especifica la hora universal coordinada (UTC) de la solicitud.Specifies the Coordinated Universal Time (UTC) for the request. Para obtener más información, consulte autorización de solicitudes para Azure Storage.For more information, see Authorize requests to Azure Storage.
x-ms-version Obligatorio para todas las solicitudes autorizadas.Required for all authorized requests. Para obtener más información, vea control de versiones de los servicios de Azure Storage.For more information, see Versioning for the Azure Storage Services.
x-ms-meta-name:value Opcional.Optional. Especifica un par nombre-valor definido por el usuario asociado al blob.Specifies a user-defined name-value pair associated with the blob. Si no se especifica ningún par nombre-valor, la operación copiará los metadatos del BLOB o archivo de origen en el BLOB de destino.If no name-value pairs are specified, the operation will copy the metadata from the source blob or file to the destination blob. Si se especifican uno o más pares nombre-valor, el BLOB de destino se crea con los metadatos especificados y los metadatos no se copian del BLOB o archivo de origen.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.

Tenga en cuenta que a partir de la versión 2009-09-19, los nombres de los metadatos deben cumplir las reglas de nomenclatura para los identificadores de C#.Note that beginning with version 2009-09-19, metadata names must adhere to the naming rules for C# identifiers. Consulte nomenclatura y referencia de contenedores, blobs y metadatos para obtener más información.See Naming and Referencing Containers, Blobs, and Metadata for more information.
x-ms-tags Opcional.Optional. Establece las etiquetas dadas codificadas de la cadena de consulta en el BLOB.Sets the given query-string encoded tags on the blob. Las etiquetas no se copian del origen de copia.Tags are not copied from the copy source. Vea los comentarios para obtener información adicional.See the Remarks for additional information. Compatible con la versión 2019-12-12 y versiones más recientes.Supported in version 2019-12-12 and newer.
x-ms-source-if-modified-since Opcional.Optional. Valor DateTime.A DateTime value. Especifique este encabezado condicional para copiar el blob solo si el blob de origen se ha modificado desde la fecha u hora especificadas.Specify this conditional header to copy the blob only if the source blob has been modified since the specified date/time. Si el blob de origen no se ha modificado, el servicio Blob devuelve el código de estado 412 (Error de condición previa).If the source blob has not been modified, the Blob service returns status code 412 (Precondition Failed). No se puede especificar este encabezado si el origen es un archivo de Azure.This header cannot be specified if the source is an Azure File.
x-ms-source-if-unmodified-since Opcional.Optional. Valor DateTime.A DateTime value. Especifique este encabezado condicional para copiar el blob solo si el blob de origen no se ha modificado desde la fecha u hora especificadas.Specify this conditional header to copy the blob only if the source blob has not been modified since the specified date/time. Si el blob de origen se ha modificado, Blob service devuelve el código de estado 412 (Error de condición previa).If the source blob has been modified, the Blob service returns status code 412 (Precondition Failed). No se puede especificar este encabezado si el origen es un archivo de Azure.This header cannot be specified if the source is an Azure File.
x-ms-source-if-match Opcional.Optional. Valor ETag.An ETag value. Especifique este encabezado condicional para copiar el blob de origen solo si la ETag coincide con el valor especificado.Specify this conditional header to copy the source blob only if its ETag matches the value specified. Si los valores de la ETag no coinciden, el servicio Blob devuelve el código de estado 412 (Error de condición previa).If the ETag values do not match, the Blob service returns status code 412 (Precondition Failed). No se puede especificar este encabezado si el origen es un archivo de Azure.This header cannot be specified if the source is an Azure File.
x-ms-source-if-none-match Opcional.Optional. Valor ETag.An ETag value. Especifique este encabezado condicional para copiar el blob de origen solo si la ETag no coincide con el valor especificado.Specify this conditional header to copy the blob only if its ETag does not match the value specified. Si los valores son idénticos, Blob service devuelve el código de estado 412 (Error de condición previa).If the values are identical, the Blob service returns status code 412 (Precondition Failed). No se puede especificar este encabezado si el origen es un archivo de Azure.This header cannot be specified if the source is an Azure File.
If-Modified-Since Opcional.Optional. Valor DateTime.A DateTime value. Especifique este encabezado condicional para copiar el blob solo si el blob de destino se ha modificado desde la fecha u hora especificadas.Specify this conditional header to copy the blob only if the destination blob has been modified since the specified date/time. Si el blob de destino no se ha modificado, el servicio Blob devuelve el código de estado 412 (Error de condición previa).If the destination blob has not been modified, the Blob service returns status code 412 (Precondition Failed).
If-Unmodified-Since Opcional.Optional. Valor DateTime.A DateTime value. Especifique este encabezado condicional para copiar el blob solo si el blob de destino no se ha modificado desde la fecha u hora especificadas.Specify this conditional header to copy the blob only if the destination blob has not been modified since the specified date/time. Si el blob de destino se ha modificado, el servicio Blob devuelve el código de estado 412 (Error de condición previa).If the destination blob has been modified, the Blob service returns status code 412 (Precondition Failed).
If-Match Opcional.Optional. Valor ETag.An ETag value. Especifique un valor ETag para este encabezado condicional para copiar el blob solo si el valor ETag especificado coincide con el valor ETag para un blob de destino existente.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 la ETag del blob de destino no coincide con la ETag especificada para If-Match, Blob service devuelve el código de estado 412 (Error de condición previa).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 Opcional.Optional. Valor ETag o el carácter comodín (*).An ETag value, or the wildcard character (*).

Especifique un valor ETag para este encabezado condicional para copiar el blob solo si el valor ETag especificado no coincide con el del blob de destino.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.

Especifique el carácter comodín ( * ) para realizar la operación solo si el BLOB de destino no existe.Specify the wildcard character (*) to perform the operation only if the destination blob does not exist.

Si no se cumple la condición especificada, Blob service devuelve el código de estado 412 (Error de condición previa).If the specified condition isn't met, the Blob service returns status code 412 (Precondition Failed).
x-ms-copy-source:name Necesario.Required. Especifica la dirección URL del BLOB de origen.Specifies the URL of the source blob. El valor puede ser una dirección URL de hasta 2 KiB de longitud que especifica un BLOB.The value may be a URL of up to 2 KiB in length that specifies a blob. El valor debe estar codificado para URL tal y como aparecería en un URI de solicitud.The value should be URL-encoded as it would appear in a request URI. El BLOB de origen debe ser público o debe estar autorizado a través de una firma de acceso compartido.The source blob must either be public or must be authorized via a shared access signature. Si el BLOB de origen es público, no se requiere autorización para realizar la operación.If the source blob is public, no authorization is required to perform the operation. Si el tamaño del BLOB de origen es mayor que 256 MiB, se producirá un error en la solicitud con 409 (conflicto).If the size of the source blob is greater than 256 MiB, the request will fail with 409 (Conflict). El tipo de BLOB del BLOB de origen debe ser BLOB en bloques.The blob type of the source blob has to be block blob. Estos son algunos ejemplos de direcciones URL de objetos de origen: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>
- https://myaccount.blob.core.windows.net/mycontainer/myblob?versionid=<DateTime>
x-ms-requires-sync:true Necesario.Required. Este encabezado indica que se trata de un BLOB de copia sincrónico de la dirección URL en lugar de un BLOB de copia asíncrono.This header indicates that this is a synchronous Copy Blob From URL instead of a Asynchronous Copy Blob.
x-ms-source-content-md5 Opcional.Optional. Un hash MD5 del contenido del BLOB del URI.A MD5 hash of the blob content from the URI. Este hash se utiliza para comprobar la integridad del BLOB durante el transporte de los datos desde el URI.This hash is used to verify the integrity of the blob during transport of the data from the URI. Cuando se especifica este encabezado, el servicio de almacenamiento compara el hash del contenido que ha llegado desde el origen de copia con este valor de encabezado.When this header is specified, the storage service compares the hash of the content that has arrived from the copy source with this header value.

Tenga en cuenta que este hash MD5 no se almacena con el BLOB.Note that this md5 hash is not stored with the blob.

Si ambos valores de hash no coinciden, la operación producirá un error con el código de estado 400 (Solicitud incorrecta).If the two hashes do not match, the operation will fail with error code 400 (Bad Request).
x-ms-lease-id:<ID> Obligatorio si el blob de destino tiene una concesión activa.Required if the destination blob has an active lease. El identificador de concesión especificado para este encabezado debe coincidir con el identificador de concesión del blob de destino.The lease ID specified for this header must match the lease ID of the destination blob. Si la solicitud no incluye el identificador de concesión o este no es válido, la operación produce un error con el código de estado 412 (Error de condición previa).If the request does not include the lease ID or it is not valid, the operation fails with status code 412 (Precondition Failed).

Si se especifica este encabezado y el blob de destino no tiene actualmente una concesión activa, la operación también producirá un error con el código de estado 412 (Error de condición previa).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).

En la versión 2012-02-12 y versiones más recientes, este valor debe especificar una concesión activa e infinita para un blob en concesión.In version 2012-02-12 and newer, this value must specify an active, infinite lease for a leased blob. Un identificador de concesión de duración finita produce un error con el código de estado 412 (Error de condición previa).A finite-duration lease ID fails with 412 (Precondition Failed).
x-ms-client-request-id Opcional.Optional. Proporciona un valor opaco generado por el cliente con un límite de 1 KiB de caracteres que se registra en los registros de análisis cuando el registro de análisis de almacenamiento está habilitado.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. Se recomienda encarecidamente usar este encabezado para correlacionar las actividades del lado cliente con las solicitudes recibidas por el servidor.Using this header is highly recommended for correlating client-side activities with requests received by the server. Para obtener más información, consulte acerca del registro de Storage Analytics y [registro de Azure: uso de registros para realizar un seguimiento de las solicitudes de almacenamiento]For more information, see About Storage Analytics Logging and [Azure Logging: Using Logs to Track Storage Requests]

Cuerpo de la solicitudRequest Body

No hay cuerpo de la solicitud.No request body.

ResponseResponse

La respuesta incluye un código de estado HTTP y un conjunto de encabezados de respuesta.The response includes an HTTP status code and a set of response headers.

Código de estadoStatus Code

Una operación correcta devuelve el código de estado 202 (Aceptado).A successful operation returns status code 202 (Accepted).

Para obtener información sobre los códigos de estado, vea códigos de estado y de error.For information about status codes, see Status and Error Codes.

Encabezados de respuestaResponse Headers

La respuesta para esta operación incluye los encabezados siguientes.The response for this operation includes the following headers. La respuesta también puede incluir otros encabezados HTTP estándar.The response may also include additional standard HTTP headers. Todos los encabezados estándar cumplen la especificación del protocolo HTTP/1.1.All standard headers conform to the HTTP/1.1 protocol specification.

Encabezado de respuestaResponse header DescripciónDescription
ETag Si la copia se ha completado, contiene el valor ETag del BLOB de destino.If the copy is complete, contains the ETag of the destination blob. Si la copia no está completa, contiene el valor ETag del BLOB vacío creado al principio de la copia.If the copy isn't complete, contains the ETag of the empty blob created at the start of the copy.

El valor ETag estará entre comillas.The ETag value will be in quotes.
Last-Modified Devuelve la fecha y la hora en la que se completó la operación de copia en el blob de destino.Returns the date/time that the copy operation to the destination blob completed.
x-ms-request-id Este encabezado identifica de forma única la solicitud que se realizó y se puede utilizar para solucionar problemas relacionados con esta.This header uniquely identifies the request that was made and can be used for troubleshooting the request. Para obtener más información, consulte solución de problemas de las operaciones de API.For more information, see Troubleshooting API Operations.
x-ms-version Indica la versión del servicio Blob utilizado para ejecutar la solicitud.Indicates the version of the Blob service used to execute the request.
Date Valor de fecha y hora UTC generado por el servicio que indica la hora a la que se inició la respuesta.A UTC date/time value generated by the service that indicates the time at which the response was initiated.
x-ms-copy-id: <id> Identificador de cadena para esta operación de copia.String identifier for this copy operation.
x-ms-copy-status: <success> Estado de la operación de copia, con estos valores:State of the copy operation, with these values:

- success: la copia se completó correctamente.- success: the copy completed successfully.
x-ms-client-request-id Este encabezado se puede usar para solucionar problemas de las solicitudes y las respuestas correspondientes.This header can be used to troubleshoot requests and corresponding responses. El valor de este encabezado es igual al valor del x-ms-client-request-id encabezado si está presente en la solicitud y el valor tiene como máximo 1024 caracteres 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 el x-ms-client-request-id encabezado no está presente en la solicitud, este encabezado no estará presente en la respuesta.If the x-ms-client-request-id header is not present in the request, this header will not be present in the response.

Cuerpo de la respuestaResponse Body

Ninguno.None.

Respuesta de ejemploSample Response

La siguiente es una respuesta de ejemplo para una solicitud de copia de un 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: 2018-03-28  
x-ms-copy-id: 1f812371-a41d-49e6-b123-f4b542e851c5  
x-ms-copy-status: success  
Date: <date>  
  

AuthorizationAuthorization

La llamada a esta operación la puede realizar el propietario de la cuenta y cualquiera que disponga de una firma de acceso compartido con permiso para escribir en el blob o en su contenedor.This operation can be called by the account owner and by anyone with a Shared Access Signature that has permission to write to this blob or its container.

El acceso al BLOB o archivo de origen se autoriza por separado, como se describe en los detalles del encabezado de la solicitud 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.

Si una solicitud especifica etiquetas con el x-ms-tags encabezado de solicitud, el autor de la llamada debe cumplir los requisitos de autorización de la operación SET BLOB Tags .If a request specifies tags with the x-ms-tags request header, the caller must meet the authorization requirements of the Set Blob Tags operation.

ObservacionesRemarks

El BLOB de origen y de destino para una operación Copiar desde la dirección URL debe ser un BLOB en bloques.The source and destination blob for a copy from URL operation must be a block blob.

La operación Copy Blob From URL copia siempre el blob de origen completo; no se admite la copia de un intervalo de bytes ni de un conjunto de bloques.The Copy Blob From URL operation always copies the entire source blob; copying a range of bytes or set of blocks is not supported.

Una operación Copy Blob From URL puede adoptar cualquiera de las formas siguientes:A Copy Blob From URL operation can take any of the following forms:

  • Puede copiar un blob de origen en un blob de destino con un nombre diferente.You can copy a source blob to a destination blob with a different name. El BLOB de destino puede ser un BLOB en bloques existente o puede ser un BLOB nuevo creado por la operación de copia.The destination blob can be an existing block blob, or can be a new blob created by the copy operation.

Al copiar desde un BLOB en bloques, se copian todos los bloques confirmados y sus identificadores de bloque.When copying from a block blob, all committed blocks and their block IDs are copied. No se copian los bloques sin confirmar.Uncommitted blocks are not copied. Al final de la operación de copia, el BLOB de destino tendrá el mismo recuento de bloques confirmados que el origen.At the end of the copy operation, the destination blob will have the same committed block count as the source.

La ETag para un blob en bloques cambia cuando se inicia la operación Copy Blob From URL y cuando finaliza la copia.The ETag for a block blob changes when the Copy Blob From URL operation is initiated and when the copy finishes.

Copiar las propiedades y los metadatos del blobCopying Blob Properties and Metadata

Cuando se copia un BLOB en bloques, las siguientes propiedades del sistema se copian en el BLOB de destino con los mismos valores:When a block 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

La lista de bloques confirmados del BLOB de origen también se copia en el BLOB de destino.The source blob's committed block list is also copied to the destination blob. No se copiarán los bloques sin confirmar.Any uncommitted blocks are not copied.

El blob de destino tiene siempre el mismo tamaño que el blob de origen, de modo que el valor del encabezado Content-Length para el blob de destino coincida con el del blob de origen.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.

Si las etiquetas para el BLOB de destino se proporcionan en el x-ms-tags encabezado, deben ser de la cadena de consulta codificada.If tags for the destination blob are provided in the x-ms-tags header, they must be query-string encoded. Los valores y las claves de etiqueta deben ajustarse a los requisitos de nomenclatura y longitud especificados en SET BLOB Tags.Tag keys and values must conform to the naming and length requirements as specified in Set Blob Tags. Además, el x-ms-tags encabezado puede contener hasta 2 KB de etiquetas.Further, the x-ms-tags header may contain up to 2kb of tags. Si se necesitan más etiquetas, use la operación establecer etiquetas de BLOB .If more tags are required, use the Set Blob Tags operation.

Si no se proporcionan etiquetas en el x-ms-tags encabezado, no se copian del BLOB de origen.If tags are not provided in the x-ms-tags header, then they are not copied from the source blob.

Copiar un blob sujeto a una concesiónCopying a Leased Blob

La operación Copy Blob From URL solo lee del blob de origen, por lo que el estado de concesión de este no es relevante.The Copy Blob From URL operation only reads from the source blob so the lease state of the source blob does not matter.

FacturaciónBilling

A la cuenta de destino de una Copy Blob From URL operación se le cobra una transacción para iniciar la copia y también se incurre en una transacción por cada solicitud al origen de la operación de copia.The destination account of a Copy Blob From URL operation is charged for one transaction to initiate the copy, and also incurs one transaction for each request to the source of the copy operation.

La cuenta de origen también incurre en costos de transacciones.The source account also incurs transaction costs. Además, si las cuentas de origen y de destino residen en regiones diferentes (por ejemplo, Norte de EE. UU. y Sur de EE. UU.), el ancho de banda utilizado para transferir la solicitud se carga en la cuenta de almacenamiento de origen como salidas.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. Las salidas entre cuentas de la misma región son gratuitas.Egress between accounts within the same region is free.

Cuando se copia un BLOB de origen en un BLOB de destino con un nombre diferente dentro de la misma cuenta, se usan recursos de almacenamiento adicionales para el nuevo BLOB, por lo que la operación de copia se hace cargo del uso de la capacidad de la cuenta de almacenamiento para esos recursos adicionales.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.

Vea tambiénSee also

Autorizar solicitudes para Azure Storage Authorize requests to Azure Storage
Códigos de estado y de error Status and Error Codes
Códigos de error del servicio BLOB Blob Service Error Codes
Introducción a cómo las instantáneas pueden incrementar los costosUnderstanding How Snapshots Accrue Charges