Incremental Copy Blob (инкрементная копия Blob);

Операция Incremental Copy Blob копирует snapshot BLOB-объекта исходной страницы в целевой страничный BLOB-объект. В место назначения передаются только отличия от ранее скопированных snapshot. Скопированные моментальные снимки представляют собой полные копии исходных snapshot, и вы можете читать или копировать их, как обычно. Этот API поддерживается с версии REST 2016-05-31.

Запрос

Запрос можно создать Incremental Copy Blob следующим образом. Рекомендуется использовать протокол HTTPS. Замените myaccount именем учетной записи хранения, mycontainer — именем контейнера, а myblob — именем целевого BLOB-объекта. Параметр comp запроса со значением incrementalcopyуказывает, что этот запрос предназначен для создания добавочного snapshot.

URI запроса метода PUT параметр "Версия HTTP"
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=incrementalcopy HTTP/1.1

URI эмулированной службы хранилища

При выполнении запроса к эмулированной службе хранилища укажите имя узла эмулятора и порт Хранилище BLOB-объектов Azure службы 127.0.0.1:10000, а затем имя эмулированной учетной записи хранения. Также укажите, что этот запрос предназначен для добавочного копирования, задав comp для параметра запроса значение incrementalcopy.

URI запроса метода PUT параметр "Версия HTTP"
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=incrementalcopy HTTP/1.1

Дополнительные сведения см. в статье Использование эмулятора Azurite для разработки локальной службы хранилища Azure.

Параметры универсального кода ресурса (URI)

В URI запроса можно указать следующие дополнительные параметры.

Параметр Описание
timeout Необязательный элемент. Параметр timeout указывается в секундах. Дополнительные сведения см. в разделе Настройка времени ожидания для операций с хранилищем BLOB-объектов.

Заголовки запросов

В следующей таблице перечислены обязательные и необязательные заголовки запросов.

Заголовок запроса Описание
Authorization Обязательный. Указывает схему авторизации, имя учетной записи и подпись. Дополнительные сведения см. в статье Авторизация запросов к Службе хранилища Azure.
Date или x-ms-date Обязательный. Задает время запроса в формате UTC. Дополнительные сведения см. в статье Авторизация запросов к Службе хранилища Azure.
x-ms-version Обязательный параметр для всех авторизованных запросов и необязательный для анонимных запросов. Задает версию операции, используемой для этого запроса. Дополнительные сведения см. в разделе Управление версиями для служб хранилища Azure.
If-Modified-Since Необязательный элемент. Значение DateTime. Задайте этот заголовок условной операции, чтобы копировать BLOB-объект, только если BLOB-объект назначения был изменен после указанной даты-времени. Если целевой BLOB-объект не был изменен, хранилище BLOB-объектов возвращает код состояния 412 (сбой предварительного условия).
If-Unmodified-Since Необязательный элемент. Значение DateTime. Укажите этот условный заголовок, чтобы скопировать большой двоичный объект только в том случае, если целевой BLOB-объект не был изменен с указанной даты и времени. Если целевой BLOB-объект был изменен, хранилище BLOB-объектов возвращает код состояния 412 (сбой предварительного условия).
If-Match Необязательный элемент. Значение ETag. ETag Укажите значение для этого условного заголовка, чтобы скопировать большой двоичный объект, только если указанное ETag значение совпадает со значением ETag для существующего целевого BLOB-объекта. ETag Если для целевого BLOB-объекта не соответствует указанному ETag для If-Match, хранилище BLOB-объектов возвращает код состояния 412 (сбой предварительного условия).
If-None-Match Необязательный элемент. Значение ETag или подстановочный знак (*).

ETag Укажите значение для этого условного заголовка, чтобы скопировать большой двоичный объект, только если указанное ETag значение не соответствует значению ETag целевого BLOB-объекта.

Укажите подстановочный знак (*) для выполнения операции, только если целевой BLOB-объект не существует.

Если указанное условие не выполняется, хранилище BLOB-объектов возвращает код состояния 412 (сбой предварительного условия).
x-ms-copy-source:name Обязательный. Указывает имя snapshot blob-объекта исходной страницы.

Это значение представляет собой URL-адрес длиной до 2 кибибайт (КиБ), указывающий snapshot страничного BLOB-объекта. Значение должно быть закодировано в URL-адресе в том виде, в каком оно указано в запросе URI. URI исходного blob-объекта можно авторизовать одним из двух способов:

URI исходного BLOB-объекта может ссылаться на страничный BLOB-объект snapshot, но он должен включать маркер подписанного URL-адреса (SAS), созданный в базовом BLOB-объекте snapshot. Поле подписанного ресурса (sr) SAS должно иметь значение b. Например: 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>.

URI исходного BLOB-объекта может ссылаться на общедоступный страничный BLOB-объект snapshot, например https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>.
x-ms-client-request-id Необязательный элемент. Предоставляет созданное клиентом непрозрачное значение с ограничением в 1 КиБ символов, которое записывается в журналы при настройке ведения журнала. Мы настоятельно рекомендуем использовать этот заголовок для сопоставления действий на стороне клиента с запросами, получаемыми сервером. Дополнительные сведения см. в разделе Мониторинг Хранилище BLOB-объектов Azure.

Текст запроса

Нет.

Ответ

Ответ включает код состояния HTTP и набор заголовков ответа.

Код состояния

Успешная операция возвращает код состояния 202 (принято). Сведения о кодах состояния см. в разделе Коды состояния и ошибок.

Заголовки ответов

Ответ для этой операции включает следующие заголовки. Ответ также может содержать дополнительные стандартные заголовки HTTP. Все стандартные заголовки соответствуют спецификации протокола HTTP/1.1.

Синтаксис Описание
ETag Содержит значение, которое можно использовать для условного выполнения операций. Значение находится в кавычках.
Last-Modified Дата и время последнего изменения большого двоичного объекта. Дополнительные сведения см. в разделе Представление значений даты и времени в заголовках.

Любая операция записи большого двоичного объекта (включая обновления метаданных или свойств большого двоичного объекта) изменяет время последнего изменения большого двоичного объекта.
x-ms-request-id Уникально идентифицирует выполненный запрос и может использоваться для устранения неполадок с запросом. Дополнительные сведения см. в разделе Устранение неполадок с операциями API.
x-ms-version Указывает версию Хранилища BLOB-объектов, используемую для выполнения запроса.
Date Значение даты и времени в формате UTC, указывающее время, когда был инициирован ответ. Служба создает это значение.
x-ms-copy-id: <id> Идентификатор строки для этой операции копирования. Используйте с Get Blob Properties , чтобы проверка состояние этой операции копирования, или передайте Abort Copy Blob в , чтобы остановить ожидающее копирование.
x-ms-copy-status: pending Состояние операции копирования. Это всегда ожидается, чтобы указать, что копирование запущено и выполняется.
x-ms-client-request-id Может использоваться для устранения неполадок запросов и соответствующих ответов. Значение этого заголовка равно значению заголовка x-ms-client-request-id , если он присутствует в запросе. Значение равно не более 1024 видимых символов ASCII. Если заголовок x-ms-client-request-id отсутствует в запросе, он не будет присутствовать в ответе.

Текст ответа

Нет.

Пример ответа

Ниже приведен пример ответа на запрос на выполнение добавочного копирования.

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> 

Авторизация

Авторизация требуется при вызове любой операции доступа к данным в службе хранилища Azure. В следующем разделе описывается, как можно авторизовать целевойIncremental Copy Blob объект для операции. Доступ к исходному BLOB-объекту или файлу авторизован отдельно, как описано в сведениях для заголовка x-ms-copy-source запроса.

Служба хранилища Azure поддерживает использование Microsoft Entra ID для авторизации запросов к данным BLOB-объектов. С помощью Microsoft Entra ID можно использовать управление доступом на основе ролей Azure (Azure RBAC) для предоставления разрешений субъекту безопасности. Субъектом безопасности может быть пользователь, группа, субъект-служба приложения или управляемое удостоверение Azure. Субъект безопасности проходит проверку подлинности Microsoft Entra ID для возврата маркера OAuth 2.0. Затем маркер можно использовать для авторизации запроса к службе BLOB-объектов.

Дополнительные сведения об авторизации с помощью Microsoft Entra ID см. в статье Авторизация доступа к BLOB-объектам с помощью Microsoft Entra ID.

Разрешения

Ниже перечислены действия RBAC, необходимые Microsoft Entra пользователю, группе или субъекту-службе для вызова Incremental Copy Blob операции, а также встроенная роль Azure RBAC с минимальными привилегиями, которая включает это действие:

Дополнительные сведения о назначении ролей с помощью Azure RBAC см. в статье Назначение роли Azure для доступа к данным BLOB-объектов.

Комментарии

Назначение добавочной копии не должно существовать или должно быть создано с предыдущей добавочной копией из того же исходного BLOB-объекта. После создания целевой blob-объект постоянно связывается с источником и может использоваться только для добавочных копий. Get Blob Properties API и List Blobs указывают, является ли blob-объектом добавочного копирования, созданным таким образом.

Вы не можете напрямую скачивать добавочные blob-объекты. Поддерживаются Get Blob Propertiesтолько операции , Incremental Copy Blobи Delete Blob. Скопированные моментальные снимки можно читать и удалять обычным образом.

Вы выполняете добавочное копирование в службе асинхронно, и для завершения необходимо выполнить опрос. Copy Blob Дополнительные сведения об опросе ожидающей копии см. в api. После завершения копирования целевой BLOB-объект будет содержать новый snapshot. Get Blob Properties API возвращает snapshot время вновь созданного snapshot.

При первом выполнении добавочного копирования целевого BLOB-объекта создается новый большой двоичный объект с snapshot, полностью скопированным из источника. Каждый последующий вызов создает Incremental Copy Blob новый snapshot путем копирования только разностных изменений из ранее скопированного snapshot.

Разностные изменения вычисляются на сервере путем Get Page Ranges вызова snapshot исходного BLOB-объекта. Задайте prevsnapshot для последней скопированной snapshot. Таким образом, те же ограничения применяются Get Page Ranges к Incremental Copy Blob. В частности, необходимо копировать моментальные снимки в порядке возрастания, и если исходный BLOB-объект создается повторно с помощью Put Blob или Copy Blob, то Incremental Copy Blob в новых моментальных снимках произойдет сбой.

Дополнительное дисковое пространство, используемое копируемым snapshot, — это размер разностных данных, передаваемых во время копирования. Этот размер можно определить, выполнив вызов разностного Get Page Ranges API на snapshot, чтобы сравнить его с предыдущим snapshot.

См. также раздел

Авторизация запросов к службе хранилища Azure
Коды состояний и ошибок
Установка времени ожидания для операций с хранилищем BLOB-объектов