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 de 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 contra o 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 de 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 Utilizar o emulador Azurite para desenvolvimento local do Armazenamento do Azure.
Parâmetros 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 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 por URL, uma vez que 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ágina, 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ágina pública; 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 nos 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 Abort Copy Blob para 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.
Importante
A Microsoft recomenda a utilização de Microsoft Entra ID com identidades geridas para autorizar pedidos para o Armazenamento do Azure. Microsoft Entra ID fornece segurança e facilidade de utilização superiores em comparação com a autorização de Chave Partilhada.
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 Microsoft Entra, grupo, identidade gerida ou principal de serviço chame a Incremental Copy Blob
operação e a função RBAC do Azure com menos privilégios que inclua esta ação:
- Ação RBAC do Azure:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write (para escrever num blob existente) ou Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action (para escrever um novo blob no destino)
- Função incorporada com menos privilégios:Contribuidor de Dados de Blobs de Armazenamento
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 Blob
e 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. Portanto, as mesmas restrições aplicadas Get Page Ranges
a Incremental Copy Blob
. Especificamente, tem de copiar instantâneos por ordem ascendente e, se o blob de origem for recriado utilizando 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