Blob de Cópia Incremental

A Incremental Copy Blob operação copia um instantâneo do blob da página de origem para um blob de página de destino. Apenas as diferenças do instantâneo copiado anteriormente são transferidas para o destino. Os instantâneos copiados são cópias completas do instantâneo original e pode ler ou copiar dos mesmos como habitualmente. Esta API é suportada desde a versão REST 2016-05-31.

Pedir

Pode construir o pedido da Incremental Copy Blob seguinte forma. É recomendado HTTPS. Substitua myaccount pelo nome da sua conta de armazenamento, mycontainer pelo nome do contentor e myblob pelo nome do blob de destino. O comp parâmetro de consulta, com o valor de incrementalcopy, indica que este pedido é para criar um instantâneo incremental.

URI do pedido do método PUT Versão HTTP
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=incrementalcopy HTTP/1.1

URI do serviço de armazenamento emulado

Quando fizer um pedido relativamente ao serviço de armazenamento emulado, especifique o nome de anfitrião do emulador e Armazenamento de Blobs do Azure porta de serviço como 127.0.0.1:10000, seguido do nome da conta de armazenamento emulada. Indique também que este pedido é para cópia incremental, ao definir o comp parâmetro de consulta como incrementalcopy.

URI do pedido do método PUT Versão HTTP
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=incrementalcopy HTTP/1.1

Para obter mais informações, veja Use Azurite emulator for local Azure Storage development (Utilizar o emulador do Azurite para o desenvolvimento do Armazenamento do Azure local).

Parâmetros do URI

Pode especificar os seguintes parâmetros adicionais no URI do pedido.

Parâmetro Description
timeout Opcional. O timeout parâmetro é expresso em segundos. Para obter mais informações, veja Setting timeouts for Blob Storage operations (Definir tempos limite para operações de Armazenamento de Blobs).

Cabeçalhos do pedido

A tabela seguinte descreve os cabeçalhos de pedido obrigatórios e opcionais.

Cabeçalho do pedido Description
Authorization Obrigatório. Especifica o esquema de autorização, o nome da conta e a assinatura. Para obter mais informações, veja Autorizar pedidos para o Armazenamento do Azure.
Date ou x-ms-date Obrigatório. Especifica a Hora Universal Coordenada (UTC) do pedido. Para obter mais informações, veja Autorizar pedidos para o Armazenamento do Azure.
x-ms-version Necessário para todos os pedidos autorizados e opcional para pedidos anónimos. Especifica a versão da operação a utilizar para este pedido. Para obter mais informações, veja Controlo de versões dos serviços de Armazenamento do Azure.
If-Modified-Since Opcional. Um DateTime valor. Especifique este cabeçalho condicional para copiar o blob apenas se o blob de destino tiver sido modificado desde a data/hora especificada. Se o blob de destino não tiver sido modificado, o Armazenamento de Blobs devolve o código de estado 412 (Falha na Pré-condição).
If-Unmodified-Since Opcional. Um DateTime valor. Especifique este cabeçalho condicional para copiar o blob apenas se o blob de destino não tiver sido modificado desde a data/hora especificada. Se o blob de destino tiver sido modificado, o Armazenamento de Blobs devolve o código de estado 412 (Falha na Pré-condição).
If-Match Opcional. Um ETag valor. Especifique um ETag valor para este cabeçalho condicional para copiar o blob, apenas se o valor especificado ETag corresponder ao ETag valor de um blob de destino existente. Se o ETag para o blob de destino não corresponder ao ETag especificado para If-Match, o Armazenamento de Blobs devolve o código de estado 412 (Falha na Pré-condição).
If-None-Match Opcional. Um ETag valor ou o caráter universal (*).

Especifique um ETag valor para este cabeçalho condicional para copiar o blob, apenas se o valor especificado ETag não corresponder ao ETag valor do blob de destino.

Especifique o caráter universal (*) para executar a operação, apenas se o blob de destino não existir.

Se a condição especificada não for cumprida, o Armazenamento de Blobs devolve o código de estado 412 (Falha na Pré-condição).
x-ms-copy-source:name Obrigatório. Especifica o nome do instantâneo do blob da página de origem.

Este valor é um URL de até 2 kibibytes (KiB) de comprimento que especifica um instantâneo de blob de página. O valor deve ser codificado com URL, tal como apareceria num URI de pedido. O URI do blob de origem pode ser autorizado de uma de duas formas:

O URI do blob de origem pode referenciar um instantâneo de blob de páginas, mas tem de incluir um token de assinatura de acesso partilhado (SAS) criado no blob base do instantâneo. O campo de recurso assinado (sr) da SAS deve ser definido como b. Por exemplo: https://<account-name>.blob.core.windows.net/<container-name>/<page-blob-name>?snapshot=2022-07-23T00:14:45.3964054Z&sp=r&st=2022-07-23T00:15:38Z&se=2022-07-23T08:15:38Z&spr=https&sv=2021-06-08&sr=b&sig=<signature>.

O URI do blob de origem pode referenciar um instantâneo de blob de páginas públicas; por exemplo, https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>.
x-ms-client-request-id Opcional. Fornece um valor opaco gerado pelo cliente com um limite de carateres de 1 KiB que é registado nos registos quando o registo é configurado. Recomendamos vivamente que utilize este cabeçalho para correlacionar as atividades do lado do cliente com os pedidos que o servidor recebe. Para obter mais informações, veja Monitorizar Armazenamento de Blobs do Azure.

Corpo do pedido

Nenhum.

Resposta

A resposta inclui um código de estado HTTP e um conjunto de cabeçalhos de resposta.

Código de estado

Uma operação bem-sucedida devolve o código de estado 202 (Aceite). Para obter informações sobre códigos de estado, veja Códigos de estado e de erro.

Cabeçalhos de resposta

A resposta para esta operação inclui os seguintes cabeçalhos. A resposta também pode incluir cabeçalhos HTTP padrão adicionais. Todos os cabeçalhos padrão estão em conformidade com a especificação do protocolo HTTP/1.1.

Syntax Descrição
ETag Contém um valor que pode utilizar para realizar operações condicionalmente. O valor está entre aspas.
Last-Modified A data e hora em que o blob foi modificado pela última vez. Para obter mais informações, veja Representação dos valores de data/hora em cabeçalhos.

Qualquer operação de escrita no blob (incluindo atualizações nos metadados ou propriedades do blob) altera a hora da última modificação do blob.
x-ms-request-id Identifica exclusivamente o pedido que foi feito e pode ser utilizado para resolver o pedido. Para obter mais informações, veja Resolver problemas de operações da API.
x-ms-version Indica a versão do Armazenamento de Blobs utilizada para executar o pedido.
Date Um valor de data/hora UTC que indica a hora em que a resposta foi iniciada. O serviço gera este valor.
x-ms-copy-id: <id> O identificador de cadeia para esta operação de cópia. Utilize com Get Blob Properties para verificar o estado desta operação de cópia ou passe para para Abort Copy Blob parar uma cópia pendente.
x-ms-copy-status: pending O estado da operação de cópia. Isto está sempre pendente, para indicar que a cópia foi iniciada e está em curso.
x-ms-client-request-id Pode ser utilizado para resolver problemas de pedidos e respostas correspondentes. O valor deste cabeçalho é igual ao valor do x-ms-client-request-id cabeçalho, se estiver presente no pedido. O valor é, no máximo, 1024 carateres ASCII visíveis. Se o x-ms-client-request-id cabeçalho não estiver presente no pedido, não estará presente na resposta.

Corpo da resposta

Nenhum.

Resposta de amostra

Segue-se uma resposta de exemplo para um pedido efetuar uma cópia incremental:

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> 

Autorização

A autorização é necessária ao chamar qualquer operação de acesso a dados no Armazenamento do Azure. A secção seguinte descreve como o objeto de destino da Incremental Copy Blob operação pode ser autorizado. O acesso ao blob ou ficheiro de origem é autorizado separadamente, conforme descrito nos detalhes do cabeçalho do x-ms-copy-source pedido.

O Armazenamento do Azure suporta a utilização de Microsoft Entra ID para autorizar pedidos para dados de blobs. Com Microsoft Entra ID, pode utilizar o controlo de acesso baseado em funções do Azure (RBAC do Azure) para conceder permissões a um principal de segurança. O principal de segurança pode ser um utilizador, grupo, principal de serviço de aplicação ou identidade gerida do Azure. O principal de segurança é autenticado por Microsoft Entra ID para devolver um token OAuth 2.0. Em seguida, o token pode ser utilizado para autorizar um pedido contra o serviço Blob.

Para saber mais sobre a autorização através de Microsoft Entra ID, veja Autorizar o acesso a blobs com Microsoft Entra ID.

Permissões

Abaixo estão listadas as ações RBAC necessárias para que um utilizador, grupo ou principal de serviço Microsoft Entra chame a Incremental Copy Blob operação e a função RBAC do Azure com menos privilégios que inclua esta ação:

Para saber mais sobre como atribuir funções com o RBAC do Azure, veja Atribuir uma função do Azure para acesso a dados de blobs.

Observações

O destino de uma cópia incremental não pode existir ou deve ter sido criado com uma cópia incremental anterior do mesmo blob de origem. Depois de o criar, o blob de destino é permanentemente associado à origem e só pode ser utilizado para cópias incrementais. As Get Blob Properties APIs e List Blobs indicam se o blob é um blob de cópia incremental criado desta forma.

Não pode transferir diretamente blobs de cópia incremental. As únicas operações suportadas são Get Blob Properties, Incremental Copy Blobe Delete Blob. Pode ler e eliminar os instantâneos copiados como habitualmente.

Efetua uma cópia incremental de forma assíncrona no serviço e tem de consultar a conclusão. Consulte a Copy Blob API para obter detalhes sobre como consultar uma cópia pendente. Quando a cópia for concluída, o blob de destino irá conter um novo instantâneo. A Get Blob Properties API devolve a hora do instantâneo do instantâneo recentemente criado.

Na primeira vez que efetuar uma cópia incremental num blob de destino, é criado um novo blob, com um instantâneo que é totalmente copiado da origem. Cada chamada subsequente para Incremental Copy Blob criar um novo instantâneo, copiando apenas as alterações diferenciais do instantâneo copiado anteriormente.

As alterações diferenciais são calculadas no servidor ao emitir uma Get Page Ranges chamada no instantâneo do blob de origem. Defina prevsnapshot como o instantâneo copiado mais recentemente. Por conseguinte, aplicam-se as mesmas Get Page Ranges restrições a Incremental Copy Blob. Especificamente, tem de copiar instantâneos por ordem ascendente e, se o blob de origem for recriado com Put Blob ou Copy Blob, Incremental Copy Blob os novos instantâneos falharão.

O espaço de armazenamento adicional consumido pelo instantâneo copiado é o tamanho dos dados diferenciais transferidos durante a cópia. Pode determinar este tamanho ao efetuar uma chamada à API diferencial Get Page Ranges no instantâneo, para compará-lo com o instantâneo anterior.

Ver também

Autorizar pedidos para o Armazenamento do Azure
Códigos de estado e de erro
Definir tempos limite para operações de Armazenamento de Blobs