Copia de blobsCopy Blob

La operación Copy Blob copia un blob en un destino en la cuenta de almacenamiento.The Copy Blob operation copies a blob to a destination within the storage account.

En la versión 2012-02-12 y versiones posteriores, el origen de una operación copiar BLOB puede ser un BLOB confirmado en cualquier cuenta de almacenamiento de Azure.In version 2012-02-12 and later, the source for a Copy Blob operation can be a committed blob in any Azure storage account.

A partir de la versión 2015-02-21, el origen de una Copy Blob operación puede ser un archivo de Azure en cualquier cuenta de Azure Storage.Beginning with version 2015-02-21, the source for a Copy Blob operation can be an Azure file in any Azure storage account.

Nota

Las cuentas de almacenamiento creadas desde el 7 de junio de 2012 son las únicas que permiten que la operación Copy Blob copie desde otra cuenta de almacenamiento.Only storage accounts created on or after June 7th, 2012 allow the Copy Blob operation to copy from another storage account.

SolicitudRequest

La solicitud Copy Blob se puede construir como sigue.The Copy Blob 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.

A partir de la versión 2013-08-15, puede especificar una firma de acceso compartido para el BLOB de destino si está en la misma cuenta que el BLOB de origen.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. A partir de la versión 2015-04-05, también puede especificar una firma de acceso compartido para el BLOB de destino si está en una cuenta de almacenamiento diferente.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.

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 del identificador 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 el nombre del BLOB o archivo de origen.Specifies the name of the source blob or file.

A partir de la versión 2012-02-12, este valor puede ser una dirección URL de hasta 2 KiB de longitud que especifica un BLOB.Beginning with version 2012-02-12, this 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. Se puede autorizar un BLOB de origen en la misma cuenta de almacenamiento mediante una clave compartida.A source blob in the same storage account can be authorized via Shared Key. Sin embargo, si el origen es un BLOB de otra cuenta, el BLOB de origen debe ser público o debe estar autorizado a través de una firma de acceso compartido.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. Si el BLOB de origen es público, no se requiere autorización para realizar la operación de copia.If the source blob is public, no authorization is required to perform the copy operation.

A partir de la versión 2015-02-21, el objeto de origen puede ser un archivo en el servicio de archivos de Azure.Beginning with version 2015-02-21, the source object may be a file in the Azure File service. Si el objeto de origen es un archivo que se va a copiar en un BLOB, el archivo de código fuente debe estar autorizado mediante una firma de acceso compartido, ya se encuentre en la misma cuenta o en una cuenta diferente.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.

Las cuentas de almacenamiento creadas desde el 7 de junio de 2012 son las únicas que permiten que la operación Copy Blob copie desde otra cuenta de almacenamiento.Only storage accounts created on or after June 7th, 2012 allow the Copy Blob operation to copy from another storage account.

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>

Cuando el objeto de origen es un archivo en el servicio de archivos de Azure, la dirección URL de origen usa el formato siguiente: Tenga en cuenta que la dirección URL debe incluir un token de SAS válido para el archivo: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

En las versiones anteriores a 2012-02-12, los blobs solo se pueden copiar en la misma cuenta, y un nombre de origen puede utilizar estos formatos:In versions before 2012-02-12, blobs can only be copied within the same account, and a source name can use these formats:

-BLOB en contenedor con nombre: /accountName/containerName/blobName- Blob in named container: /accountName/containerName/blobName
-Instantánea en contenedor con nombre: /accountName/containerName/blobName?snapshot=<DateTime>- Snapshot in named container: /accountName/containerName/blobName?snapshot=<DateTime>
-BLOB en el contenedor raíz: /accountName/blobName- Blob in root container: /accountName/blobName
-Snapshot en el contenedor raíz: /accountName/blobName?snapshot=<DateTime>- Snapshot in root container: /accountName/blobName?snapshot=<DateTime>
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-source-lease-id: <ID> Opcional, versiones anteriores a 2012-02-12 (no admitido en la versión 2012-02-12 y versiones más recientes).Optional, versions before 2012-02-12 (unsupported in 2012-02-12 and newer). Especifique este encabezado para realizar la operación Copy Blob solo si el identificador de concesión proporcionado coincide con el identificador de concesión activa del blob de origen.Specify this header to perform the Copy Blob operation only if the lease ID given matches the active lease ID of the source blob.

Si se especifica este encabezado y el blob de origen 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 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 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 el 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.
x-ms-access-tier Opcional.Optional. Especifica el nivel que se va a establecer en el BLOB de destino.Specifies the tier to be set on the target blob. Solo para los blobs en páginas de una cuenta premium con la versión 2017-04-17 y versiones más recientes.For page blobs on a premium account only with version 2017-04-17 and newer. Compruebe la Premium Storage de alto rendimiento y los discos administrados para las máquinas virtuales para obtener una lista completa de los niveles admitidos.Check High-performance Premium Storage and managed disks for VMs for a full list of supported tiers. Versión 2018-11-09 y versiones más recientes para blobs en bloques.Version 2018-11-09 and newer for Block blobs. Los niveles de BLOB en bloques se admiten en cuentas de BLOB Storage o de uso general V2; los valores válidos son Hot / Cool / Archive .Block blob tiering is supported on blob storage or general purpose v2 accounts, valid values are Hot/Cool/Archive. Para obtener información detallada sobre la organización en niveles de blobs en bloques , consulte niveles de almacenamiento de acceso frecuente, esporádico y de archivo.For detailed information about block blob tiering see Hot, cool and archive storage tiers.
x-ms-rehydrate-priority Opcional.Optional. Indica la prioridad con la que se rehidratará un BLOB archivado.Indicates the priority with which to rehydrate an archived blob. Se admite en la versión 2019-02-02 y versiones más recientes para blobs en bloques.Supported on version 2019-02-02 and newer for Block blobs. Los valores válidos son High / Standard .Valid values are High/Standard. La prioridad se puede establecer en un BLOB solo una vez.The priority can be set on a blob only once. Este encabezado se omitirá en las solicitudes posteriores al mismo BLOB.This header will be ignored on subsequent requests to the same blob. La prioridad predeterminada sin este encabezado es Standard .Default priority without this header is Standard.

Esta operación admite los x-ms-if-tags x-ms-source-if-tags encabezados condicionales y para que se realicen correctamente solo si se cumple la condición especificada.This operation supports the x-ms-if-tags and x-ms-source-if-tags conditional headers to succeed only if the specified condition is met. Para obtener más información, consulte Especificación de encabezados condicionales para las operaciones de Blob Service.For more information, see Specifying Conditional Headers for Blob Service Operations.

Cuerpo de la solicitudRequest Body

Ninguno.None.

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

En la versión 2012-02-12 y versiones más recientes, una operación correcta devuelve el código de estado 202 (Aceptado).In version 2012-02-12 and newer, a successful operation returns status code 202 (Accepted).

En las versiones anteriores a 2012-02-12, una operación correcta devuelve el código de estado 201 (Creado).In versions before 2012-02-12, a successful operation returns status code 201 (Created).

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 En la versión 2012-02-12 y versiones más recientes, si se completa la copia, contiene la ETag del blob de destino.In version 2012-02-12 and newer, if the copy is complete, contains the ETag of the destination blob. Si la copia no se completa, contiene la ETag del blob vacío creado al inicio de la copia.If the copy isn’t complete, contains the ETag of the empty blob created at the start of the copy.

En las versiones anteriores a 2012-02-12, devuelve la ETag para el blob de destino.In versions before 2012-02-12, returns the ETag for the destination blob.

En la versión 2011-08-18 y versiones más recientes, el valor ETag estará entre comillas.In version 2011-08-18 and newer, 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. Este encabezado se devuelve para las solicitudes realizadas en la versión 2009-09-19 y versiones posteriores.This header is returned for requests made against version 2009-09-19 and later.
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> Versión 2012-02-12 y versiones más recientes.Version 2012-02-12 and newer. Identificador de cadena para esta operación de copia.String identifier for this copy operation. Utilícelo con Get Blob o Get Blob Properties para comprobar el estado de esta operación de copia, o páselo a Abort Copy Blob para anular una copia pendiente.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> Versión 2012-02-12 y versiones más recientes.Version 2012-02-12 and newer. 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.
- pending: la copia está en curso.- pending: the copy is in progress.
x-ms-version-id: <DateTime> Versión 2019-12-12 y versiones más recientes.Version 2019-12-12 and newer. Un valor de fecha y hora devuelto por el servicio que identifica de forma única el BLOB.A DateTime value returned by the service that uniquely identifies the blob. El valor de este encabezado indica la versión del BLOB y se puede usar en solicitudes posteriores para tener acceso a esta versión del BLOB.The value of this header indicates the blob version, and may be used in subsequent requests to access this version of the blob. Este valor se debe tratar como opaco.This value should be treated as opaque.
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: 2015-02-21  
x-ms-copy-id: 1f812371-a41d-49e6-b123-f4b542e851c5  
x-ms-copy-status: pending
x-ms-version-id: <DateTime>  
Date: <date>  
  

AuthorizationAuthorization

El propietario de la cuenta puede llamar a esta operación.This operation can be called by the account owner. Para las solicitudes realizadas en la versión 2013-08-15 y posteriores, se admite una firma de acceso compartido que tiene permiso para escribir en el blob de destino o en su contenedor para las operaciones de copia dentro de la misma cuenta.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. Tenga en cuenta que la firma de acceso compartido especificada en la solicitud solo se aplica al blob de destino.Note that the shared access signature specified on the request applies only to the destination blob.

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.

En la tabla siguiente se describe cómo se pueden autorizar los objetos de origen y de destino para una operación de copia de blobs.The following table describes how the destination and source objects for a Copy Blob operation may be authorized.

BlobBlob Autorización con clave compartida/clave compartida LiteAuthorization with Shared Key/Shared Key Lite Autorización con firma de acceso compartidoAuthorization with Shared Access Signature Objeto público que no requiere autorizaciónPublic Object Not Requiring Authorization
BLOB de destinoDestination blob Yes Yes NoNo
BLOB de origen en la misma cuentaSource blob in same account Yes Yes Yes
BLOB de origen en otra cuentaSource blob in another account NoNo Yes Yes
Archivo de origen en la misma cuenta o en otra cuentaSource file in the same account or another account NoNo Yes N/DN/A

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.

ComentariosRemarks

En la versión 2012-02-12 y versiones más recientes, la operación Copy Blob se puede completar de forma asincrónica.In version 2012-02-12 and newer, the Copy Blob operation can complete asynchronously. Esta operación devuelve un identificador de copia que se puede utilizar para comprobar o anular la operación de copia.This operation returns a copy ID you can use to check or abort the copy operation. Blob service copia blobs en función de la mejor opción.The Blob service copies blobs on a best-effort basis.

El BLOB de origen para una operación de copia puede ser un BLOB en bloques, un BLOB en anexos o un BLOB en páginas, o una instantánea.The source blob for a copy operation may be a block blob, an append blob, or a page blob, or a snapshot. Si el blob de destino ya existe, debe ser del mismo tipo que el blob de origen.If the destination blob already exists, it must be of the same blob type as the source blob. Si existe un blob de destino, se sobrescribirá.Any existing destination blob will be overwritten. El blob de destino no puede modificarse mientras haya una operación de copia en curso.The destination blob cannot be modified while a copy operation is in progress.

En la versión 2015-02-21 y versiones más recientes, el origen de la operación de copia también puede ser un archivo en el servicio de archivos de Azure.In version 2015-02-21 and newer, the source for the copy operation may also be a file in the Azure File service. Si el origen es un archivo, el destino debe ser un BLOB en bloques.If the source is a file, the destination must be a block blob.

Es posible procesar secuencialmente varias operaciones Copy Blob pendientes en una cuenta.Multiple pending Copy Blob operations within an account might be processed sequentially. Un blob de destino solo puede tener una operación de copia de blob pendiente.A destination blob can only have one outstanding copy blob operation. En otras palabras, un blob no puede ser el destino de varias operaciones Copy Blob pendientes.In other words, a blob cannot be the destination for multiple pending Copy Blob operations. Si se intenta realizar una operación Copy Blob en un blob de destino que ya tiene una copia pendiente, se producirá un error con el código de estado 409 (Conflicto).An attempt to Copy Blob to a destination blob that already has a copy pending fails with status code 409 (Conflict).

Las cuentas de almacenamiento creadas desde el 7 de junio de 2012 son las únicas que permiten que la operación Copy Blob copie desde otra cuenta de almacenamiento.Only storage accounts created on or after June 7th, 2012 allow the Copy Blob operation to copy from another storage account. Si se intenta copiar de otra cuenta de almacenamiento en una cuenta creada antes del 7 de junio de 2012, se producirá un error con el código de estado 400 (Solicitud incorrecta).An attempt to copy from another storage account to an account created before June 7th, 2012 fails with status code 400 (Bad Request).

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

Una operación Copy Blob puede adoptar cualquiera de las formas siguientes:A Copy Blob 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 existente del mismo tipo (en bloques, anexos o páginas), o puede ser un nuevo blob creado por la operación de copia.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.

  • Puede copiar un blob de origen en un blob de destino con el mismo nombre. De este modo, se reemplazará de forma efectiva el blob de destino.You can copy a source blob to a destination blob with the same name, effectively replacing the destination blob. Este tipo de operación de copia quita los bloques sin confirmar y sobrescribe los metadatos del blob.Such a copy operation removes any uncommitted blocks and overwrites the blob's metadata.

  • Puede copiar un archivo de origen del servicio de Azure File en un blob de destino.You can copy a source file in the Azure File service to a destination blob. El blob de destino puede ser un blob en bloques existente o un nuevo blob de ese tipo creado por la operación de copia.The destination blob can be an existing block blob, or can be a new block blob created by the copy operation. No se admite la copia de archivos a blobs en páginas o blobs en anexos.Copying from files to page blobs or append blobs is not supported.

  • Puede copiar una instantánea sobre su blob base.You can copy a snapshot over its base blob. Si se mueve una instantánea a la posición del blob, puede restaurar una versión anterior de un blob.By promoting a snapshot to the position of the base blob, you can restore an earlier version of a blob.

  • Puede copiar una instantánea en un blob de destino con un nombre diferente.You can copy a snapshot to a destination blob with a different name. El blob resultante de destino es un blob en el que se puede escribir y no una instantánea.The resulting destination blob is a writeable blob and not a snapshot.

Al copiar desde un blob en páginas, el servicio Blob crea un blob en páginas de destino con la misma longitud que el blob de origen, y cuyo contenido inicial es todo ceros.When copying from a page blob, the Blob service creates a destination page blob of the source blob’s length, initially containing all zeroes. A continuación, los intervalos de páginas de origen se enumeran, y se copian los intervalos no vacíos.Then the source page ranges are enumerated, and non-empty ranges are copied.

Para un BLOB en bloques o un BLOB en anexos, el Blob service crea un BLOB confirmado de longitud cero antes de volver de esta operación.For a block blob or an append blob, the Blob service creates a committed blob of zero length before returning from this 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.

Al copiar desde un BLOB en anexos, se copian todos los bloques confirmados.When copying from an append blob, all committed blocks are 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.

En el caso de todos los tipos de BLOB, puede llamar Get Blob Get Blob Properties a o en el BLOB de destino para comprobar el estado de la operación de copia.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. El blob final se confirmará cuando se complete la copia.The final blob will be committed when the copy completes.

Cuando el origen de una operación de copia proporciona ETags, si se produce algún cambio en el origen mientras la copia está en curso, la copia producirá un error.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. Si se intenta cambiar el blob de destino mientras hay una copia en curso, se producirá un error con el código de estado 409 Conflicto.An attempt to change the destination blob while a copy is in progress will fail with 409 Conflict. Si el blob de destino tiene una concesión infinita, el identificador de concesión se debe pasar a Copy Blob.If the destination blob has an infinite lease, the lease ID must be passed to Copy Blob. Las concesiones de duración finita no se permiten.Finite-duration leases are not allowed.

La ETag para un blob en bloques cambia cuando se inicia la operación Copy Blob y cuando finaliza la copia.The ETag for a block blob changes when the Copy Blob operation is initiated and when the copy finishes. La ETag para un blob en páginas cambia cuando se inicia la operación Copy Blob, y sigue cambiando con frecuencia durante la copia.The ETag for a page blob changes when the Copy Blob operation is initiated, and continues to change frequently during the copy. El contenido de un blob en bloques solo será visible si se utiliza un GET al finalizar la copia completa.The contents of a block blob are only visible using a GET after the full copy completes.

Copiar propiedades, etiquetas y metadatos de BLOBCopying Blob Properties, Tags, and Metadata

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

La lista de bloques confirmados del blob de origen también se copia en el blob de destino, si este es un blob en bloques.The source blob's committed block list is also copied to the destination blob, if the blob is a block 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.

Cuando el blob de origen y el blob de destino son iguales, Copy Blob quita los bloques sin confirmar.When the source blob and destination blob are the same, Copy Blob removes any uncommitted blocks. Si se especifican metadatos en este caso, los metadatos existentes se sobrescriben con los nuevos.If metadata is specified in this case, the existing metadata is overwritten with the new metadata.

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 solo lee del blob de origen, por lo que el estado de concesión de este no es relevante.The Copy Blob operation only reads from the source blob so the lease state of the source blob does not matter. Sin embargo, la operación Copy Blob guarda la ETag del blob de origen cuando se inicia la copia.However, the Copy Blob operation saves the ETag of the source blob when the copy is initiated. Si el valor ETag cambia antes de que finalice la copia, la copia produce un error.If the ETag value changes before the copy completes, the copy fails. Para evitar que se realicen cambios en el blob de origen, establezca una concesión sobre el mismo durante la operación de copia.You can prevent changes to the source blob by leasing it during the copy operation.

Si el blob de destino tiene una concesión infinita activa, debe especificar el identificador de concesión en la llamada a la operación Copy Blob.If the destination blob has an active infinite lease, you must specify its lease ID in the call to the Copy Blob operation. Si la concesión especificada es una concesión activa de duración finita, esta llamada produce un error con un código de estado 412 (Error de condición previa).If the lease you specify is an active finite-duration lease, this call fails with a status code 412 (Precondition Failed). Mientras la copia está pendiente, las operaciones de concesión en el blob de destino producirán un error con el código de estado 409 (Conflicto).While the copy is pending, any lease operation on the destination blob will fail with status code 409 (Conflict). Una concesión infinita en el blob de destino se bloquea de esta manera durante la operación de copia siempre que la copia se realice en un blob de destino con un nombre diferente del de origen, en un blob de destino con el mismo nombre que el de origen o se promueva una instantánea sobre su blob base.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. Si el cliente especifica un identificador de concesión en un blob que aún no existe, Blob service devolverá el código de estado 412 (Error de condición previa) para las solicitudes realizadas en la versión 2013-08-15 y posteriores; para las versiones anteriores, Blob service devolverá el código de estado 201 (Creado).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).

Copiar instantáneasCopying Snapshots

Cuando se copia un BLOB de origen, las instantáneas o las versiones del BLOB de origen no se copian en el destino.When a source blob is copied, any snapshots or versions of the source blob are not copied to the destination. Cuando un BLOB de destino se sobrescribe con una copia, las instantáneas o las versiones asociadas al BLOB de destino permanecen intactas bajo su nombre.When a destination blob is overwritten with a copy, any snapshots or versions associated with the destination blob stay intact under its name.

Puede realizar una operación de copia para promover un blob de instantánea sobre su blob base.You can perform a copy operation to promote a snapshot blob over its base blob. De esta forma puede restaurar una versión anterior de un blob.In this way you can restore an earlier version of a blob. La instantánea se conserva, pero el destino se sobrescribe con una copia que se puede leer y escribir.The snapshot remains, but its destination is overwritten with a copy that can be both read and written.

Copiar versionesCopying Versions

Puede realizar una operación de copia para promover un BLOB de versión sobre su BLOB base.You can perform a copy operation to promote a version blob over its base blob. De esta forma puede restaurar una versión anterior de un blob.In this way you can restore an earlier version of a blob. La versión permanece, pero su destino se sobrescribe con una copia que se puede leer y escribir.The version remains, but its destination is overwritten with a copy that can be both read and written.

Copiando BLOB archivado (versión 2018-11-09 y versiones más recientes)Copying Archived Blob (version 2018-11-09 and newer)

Un BLOB archivado se puede copiar en un nuevo BLOB dentro de la misma cuenta de almacenamiento.An archived blob can be copied to a new blob within the same storage account. Esto seguirá dejando el BLOB archivado inicialmente tal cual.This will still leave the initially archived blob as is. Al copiar un BLOB archivado como origen, la solicitud debe contener el encabezado x-ms-access-tier que indica el nivel del BLOB de destino.When copying an archived blob as source the request must contain the header x-ms-access-tier indicating the tier of the destination blob. Los datos se copiarán finalmente en el BLOB de destino.The data will be eventually copied to the destination blob.

El origen y el destino de la copia deben ser la misma cuenta de almacenamiento cuando se Archive el origen.The copy source and destination should be the same storage account when the source is archived. La solicitud producirá un conflicto si el origen de la copia todavía está en estado rehidratado pendiente.The request will fail with Conflict if the source of the copy is still in pending rehydrate state.

Para obtener información detallada sobre el nivel de blobs en bloques , consulte niveles de almacenamiento de archivo, esporádico yfrecuente.For detailed information about block blob level tiering see Hot, cool and archive storage tiers.

Trabajar con una copia pendiente (versión 2012-02-12 y versiones más recientes)Working with a Pending Copy (version 2012-02-12 and newer)

Si la Copy Blob operación completa la copia de forma asincrónica, use la tabla siguiente para determinar el paso siguiente en función del código de estado devuelto por 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:

Código de estadoStatus Code SignificadoMeaning
202 (Aceptado), x-ms-copy-status: success202 (Accepted), x-ms-copy-status: success La copia se realizó correctamente.Copy completed successfully.
202 (Aceptado), x-ms-copy-status: pending202 (Accepted), x-ms-copy-status: pending La copia no se ha completado.Copy has not completed. Sondee el blob de destino mediante Get Blob Properties para examinar el encabezado x-ms-copy-status hasta que la copia se complete o produzca un error.Poll the destination blob using Get Blob Properties to examine the x-ms-copy-status until copy completes or fails.
4xx, 500 o 5034xx, 500, or 503 Se ha producido un error en la copia.Copy failed.

Tanto durante una operación Copy Blob como después de ella, las propiedades del blob de destino contienen el identificador de copia de la operación Copy Blob y la dirección URL del blob de origen.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. Cuando se completa la copia, el servicio Blob escribe el valor de la hora y del resultado (success, failed o aborted) en las propiedades del blob de destino.When the copy completes, the Blob service writes the time and outcome value (success, failed, or aborted) to the destination blob properties. Si el resultado de la operación es failed, el encabezado x-ms-copy-status-description contiene una cadena de detalles de error.If the operation failed, the x-ms-copy-status-description header contains an error detail string.

Una operación Copy Blob pendiente tiene un tiempo de espera de 2 semanas.A pending Copy Blob operation has a 2 week timeout. Si la copia no se ha completado después de 2 semanas, se agota el tiempo de espera y se obtiene un blob vacío con el campo x-ms-copy-status establecido en failed y el campo x-ms-copy-status-description establecido en 500 (Operación cancelada).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). Los errores intermitentes o recuperables que pueden aparecer durante una copia podrían impedir el progreso de esta, pero no que se complete.Intermittent, non-fatal errors that can occur during a copy might impede progress of the copy but not cause it to fail. En estos casos, x-ms-copy-status-description describe los errores intermitentes.In these cases, x-ms-copy-status-description describes the intermittent errors.

Cualquier intento de modificar o realizar una instantánea del blob de destino durante la copia generará un error con el código de estado 409 (Conflicto) Copia de blob en curso.Any attempt to modify or snapshot the destination blob during the copy will fail with 409 (Conflict) Copy Blob in Progress.

Si llama a la operación Abort Copy Blob, verá un encabezado x-ms-copy-status:aborted y el blob de destino tendrá los metadatos intactos y una longitud de blob de cero bytes.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. Puede repetir la llamada original a Copy Blob para volver a intentar la copia de nuevo.You can repeat the original call to Copy Blob to try the copy again.

Si la Copy Blob operación se completa de forma sincrónica, utilice la siguiente tabla para determinar el estado de la operación de copia:If the Copy Blob operation completes synchronously, use the following table to determine the status of the copy operation:

Código de estadoStatus Code SignificadoMeaning
202 (Aceptado), x-ms-copy-status: success202 (Accepted), x-ms-copy-status: success La copia se realizó correctamente.Copy completed successfully.
4xx, 500 o 5034xx, 500, or 503 Se ha producido un error en la copia.Copy failed.

El nivel se hereda para los niveles de Premium Storage.Tier is inherited for premium storage tiers. En el caso de los blobs en bloques, al sobrescribir el BLOB de destino se heredará el nivel de acceso frecuente o esporádico del destino si no se proporciona x-MS-Access-Tier.For block blobs, overwriting the destination blob will inherit Hot/Cool tier from the destination if x-ms-access-tier is not provided. Se producirá un error al sobrescribir un BLOB archivado.Overwriting an archived blob will fail. Para obtener información detallada sobre el nivel de blobs en bloques , consulte niveles de almacenamiento de archivo, esporádico yfrecuente.For detailed information about block blob level tiering see Hot, cool and archive storage tiers.

FacturaciónBilling

Se cobra una transacción en la cuenta de destino de una operación Copy Blob por iniciar la copia, y también se contabiliza una transacción por cada solicitud de anulación u obtención del estado de la operación de copia.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.

Cuando el blob de origen está en otra cuenta, la cuenta de origen soporta costos de transacción.When the source blob is in another account, the source account 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.

Al copiar un blob de origen en un blob de destino con un nombre diferente en la misma cuenta, se utilizan recursos de almacenamiento adicionales para el nuevo blob, por lo que la operación de copia conlleva unos costos por el 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. Sin embargo, si el nombre del blob de origen y el de destino es el mismo en la misma cuenta (por ejemplo, cuando se promueve una instantánea a su blob base), no se conlleva ningún cargo adicional que no sean los metadatos de copia adicionales almacenados en la versión 2012-02-12 y versiones más recientes.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.

Cuando se promueve una instantánea para reemplazar su blob base, la instantánea y el blob base pasan a ser idénticos.When you promote a snapshot to replace its base blob, the snapshot and base blob become identical. Comparten bloques o páginas, por lo que la operación de copia no da como resultado un costo adicional por el uso de la capacidad de la cuenta de almacenamiento.They share blocks or pages, so the copy operation does not result in an additional charge against the storage account's capacity usage. Sin embargo, si copia una instantánea en un blob de destino con un nombre diferente, conllevará un costo adicional por los recursos de almacenamiento utilizados por el nuevo blob resultante.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. Dos blobs con nombres diferentes no pueden compartir bloques o páginas aunque sean idénticos.Two blobs with different names cannot share blocks or pages even if they are identical. Para obtener más información sobre los escenarios de costos de instantáneas, consulte Descripción de cómo las instantáneas acumulan cargos.For more information about snapshot cost scenarios, see Understanding How Snapshots Accrue Charges.

Consulte 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
Descripción de cómo las instantáneas acumulan cargos Understanding How Snapshots Accrue Charges
Abort Copy BlobAbort Copy Blob