Продажи: 1-800-867-1389

Копирование большого двоичного объекта

Обновлено: Ноябрь 2013 г.

Операция Copy Blob копирует BLOB-объект в место назначения в учетной записи хранилища. В версии 2012-02-12 и более новой источником для операции Copy Blob может быть зафикисированный BLOB-объект в любой учетной записи хранилища Azure.

noteПримечание
Только учетные записи хранилища, созданные 7 июня 2012 года или позже, позволяют использовать операцию Copy Blob для копирования из другой учетной записи хранилища.

Запрос Copy Blob можно составить следующим образом. Рекомендуется использовать протокол HTTPS. Замените myaccount именем своей учетной записи хранения, mycontainer — именем своего контейнера, а myblob — именем своего конечного большого двоичного объекта. Начиная с версии 2013-08-15 можно указать подписанный URL-адрес для конечного большого двоичного объекта.

 

  URI запроса метода PUT Версия HTTP

https://myaccount.blob.core.windows.net/mycontainer/myblob

HTTP/1.1

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

 

  URI запроса метода PUT Версия HTTP

http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob

HTTP/1.1

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

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

 

Параметр Описание

timeout

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

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

 

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

Authorization

Обязательно. Указывает схему проверки подлинности, имя учетной записи и подпись. Дополнительные сведения см. в Проверка подлинности для служб хранения Azure.

Date или x-ms-date

Обязательно. Задает время в формате UTC для запроса. Дополнительные сведения см. в Проверка подлинности для служб хранения Azure.

x-ms-version

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

x-ms-meta-name:value

Необязательно. Задает определяемую пользователем пару «имя-значение», связанную с BLOB-объектом. Если не заданы пары «имя-значение», то операция скопирует метаданные большого двоичного объекта источника в BLOB-объект назначения. Если заданы одна или несколько пар «имя-значение», то BLOB-объект назначения создается с указанными метаданными и метаданные не копируются из большого двоичного объекта источника.

Обратите внимание: начиная с версии 2009-09-19, имена метаданных должны соответствовать правилам именования для идентификаторов C#. Дополнительные сведения см. в разделе Именование контейнеров, больших двоичных объектов и метаданных и ссылка на них.

x-ms-source-if-modified-since

Необязательно. Значение DateTime. Задайте этот заголовок условной операции, чтобы BLOB-объект копировался, только если BLOB-объект источника был изменен, начиная с указанной даты-времени. Если BLOB-объект источника не был изменен, то служба BLOB-объектов возвращает код состояния 412 (необходимое условие не выполнено).

x-ms-source-if-unmodified-since

Необязательно. Значение DateTime. Задайте этот заголовок условной операции, чтобы BLOB-объект копировался, только если BLOB-объект источника не был изменен, начиная с указанной даты-времени. Если BLOB-объект источника изменен, служба BLOB-объектов возвращает код состояния 412 (необходимое условие не выполнено).

x-ms-source-if-match

Необязательно. Значение ETag. Задайте этот заголовок условной операции, чтобы BLOB-объект источника копировался, только если его значение ETag согласуется с указанным значением. Если это значение ETag не согласуется, то служба BLOB-объектов возвращает код состояния 412 (необходимое условие не выполнено).

x-ms-source-if-none-match

Необязательно. Значение ETag. Задайте этот заголовок условной операции, чтобы BLOB-объект копировался, только если его значение ETag не согласуется с указанным значением. Если значения совпадают, то служба BLOB-объектов возвращает код состояния 412 (необходимое условие не выполнено).

If-Modified-Since

Необязательно. Значение DateTime. Задайте этот заголовок условной операции, чтобы копировать BLOB-объект, только если BLOB-объект назначения был изменен после указанной даты-времени. Если BLOB-объект назначения не изменен, то служба BLOB-объектов возвращает код состояния 412 (необходимое условие не выполнено).

If-Unmodified-Since

Необязательно. Значение DateTime. Задайте этот заголовок условной операции, чтобы копировать BLOB-объект, только если BLOB-объект назначения не был изменен после указанной даты-времени. Если BLOB-объект назначения изменен, то служба BLOB-объектов возвращает код состояния 412 (необходимое условие не выполнено).

If-Match

Необязательно. Значение ETag. Укажите значение ETag для этого заголовка условной операции, чтобы копировать BLOB-объект, только если указанное значение ETag согласуется со значением ETag для существующего BLOB-объекта назначения. Если значение ETag для большого двоичного объекта назначения не согласуется со значением ETag, указанным для If-Match, то служба BLOB-объектов возвращает код состояния 412 (необходимое условие не выполнено).

If-None-Match

Необязательно. Значение ETag или символ-шаблон (*).

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

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

Если указанное условие не соблюдено, то служба BLOB-объектов возвращает код состояния 412 (необходимое условие не выполнено).

x-ms-copy-source:name

Обязательно. Указывает имя большого двоичного объекта источника.

В версии 2012-02-12 и более новой версии это значение представляет собой URL-адрес длиной до 2 КБ, который указывает BLOB-объект. Исходный большой двоичный объект в той же учетной записи может быть закрытым, но большой двоичный объект в другой учетной записи должен быть общим или принимать учетные данные, включенные в этот URL-адрес, такие как подпись коллективного доступа. Только учетные записи хранилища, созданные 7 июня 2012 года или позже, позволяют использовать операцию Copy Blob для копирования из другой учетной записи хранилища. Корпорация Майкрософт рекомендует по возможности использовать HTTPS. Примеры:

  • https://myaccount.blob.core.windows.net/mycontainer/myblob

  • https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>

В версиях, предшествующих 2012-02-12, BLOB-объекты могут быть скопированы только в пределах одной и той же учетной записи, а в имени источника могут использоваться следующие форматы:

  • BLOB-объект в именованном контейнере: /accountName/containerName/blobName

  • Моментальный снимок в именованном контейнере: /accountName/containerName/blobName?snapshot=<DateTime>

  • BLOB-объект в корневом контейнере: /accountName/blobName

  • Моментальный снимок в корневом контейнере: /accountName/blobName?snapshot=<DateTime>

x-ms-lease-id:<ID>

Требуется, если BLOB-объект назначения имеет активную аренду. Идентификатор аренды, указанный для этого заголовка, должен согласовываться с идентификатором аренды большого двоичного объекта назначения. Если запрос не включает идентификатор аренды или не является допустимым, операция оканчивается неудачей с кодом состояния 412 (необходимое условие не выполнено).

Если задан этот заголовок и BLOB-объект назначения в настоящее время не имеет активной аренды, то операция также окончится неудачей с кодом состояния 412 (необходимое условие не выполнено).

В версии 2012-02-12 и более новой версии это значение должно задавать активную, бесконечную аренду для арендованного большого двоичного объекта. Применение идентификатора аренды с конечным временем существования оканчивается неудачей с кодом 412 (необходимое условие не выполнено).

x-ms-source-lease-id: <ID>

Необязательно, версии, предшествующие 2012-02-12 (не поддерживается в версии 2012-02-12 и более новых версиях). Задайте этот заголовок, чтобы операция Copy Blob выполнялась, только если указанный идентификатор аренды согласуется с активным идентификатором аренды большого двоичного объекта источника.

Если указан этот заголовок и BLOB-объект источника в настоящее время не имеет активной аренды, то операция также оканчивается неудачей с кодом состояния 412 (необходимое условие не выполнено).

x-ms-client-request-id

Необязательно. Предоставляет сформированное клиентом непрозрачное значение с ограничением в 1 КБ, которое записывается в журналы аналитики, когда включено ведение журналов аналитики хранилища. Этот заголовок настоятельно рекомендуется использовать для соотнесения действий, выполняемых на стороне клиента, с запросами, получаемыми сервером. Дополнительные сведения см. в разделах Сведения о ведении журнала службы аналитики хранилища и Ведение журналов в Windows Azure: использование журналов для отслеживания запросов к хранилищу.

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

В версии 2012-02-12 и более новой версии успешная операция возвращает код состояния 202 (принято).

В версиях, предшествующих версии 2012-02-12, успешная операция возвращает код состояния 201 (создано).

Сведения о кодах состояния см. в разделе Коды состояний и ошибок.

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

 

Заголовок ответа Описание

ETag

В версии 2012-02-12 и более новой версии, если копия является полной, то содержит значение ETag для большого двоичного объекта назначения. Если копия не является полной, то содержит значение ETag пустого BLOB-объекта, созданного в начале копирования.

В версиях, предшествующих версии 2012-02-12, происходит возврат значения ETag для BLOB-объекта назначения.

В версии 2011-08-18 и более новой версии значение ETag содержится в кавычках.

Last-Modified

Возвращает дату-время завершения операции копирования в BLOB-объект назначения.

x-ms-request-id

Этот заголовок однозначно определяет выполненный запрос, его также можно использовать для устранения связанных с запросом неполадок. Дополнительные сведения см. в Устранение неполадок при API-операциях.

x-ms-version

Указывает версию службы BLOB-объектов, используемую для выполнения запроса. Этот заголовок возвращается для запросов к версии 2009-09-19 и более поздним версиям.

Date

Значение даты и времени в формате UTC, сформированное службой и указывающее время, когда был инициирован ответ.

x-ms-copy-id: <id>

Версия 2012-02-12 и более поздние. Идентификатор строки для этой операции копирования. Используется с Get Blob или Get Blob Properties для проверки состояния операции копирования или передачи в Abort Copy Blob для аварийного завершения незавершенной операции копирования.

x-ms-copy-status: <success | pending>

Версия 2012-02-12 и более поздние. Состояние операции копирования со следующими значениями:

  • success: копирование завершено успешно.

  • pending: идет копирование.

Ниже приведен образец ответа на запрос копирования BLOB-объекта.

Response Status:
HTTP/1.1 202 Accepted

Response Headers: 
Last-Modified: Thu, 09 Feb 2012 23:30:19 GMT 
ETag: "0x8CEB669D794AFE2"
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: cc6b209a-b593-4be1-a38a-dde7c106f402
x-ms-version: 2012-02-12
x-ms-copy-id: 1f812371-a41d-49e6-b123-f4b542e851c5
x-ms-copy-status: pending
Date: Thu, 09 Feb 2012 23:30:18 GMT

Эта операция может быть вызвана владельцем учетной записи. Для запросов, сделанных в версии 2013-08-15 и более поздних, подпись коллективного доступа, которая имеет разрешение записывать в конечный большой двоичный объект или его контейнер, поддерживается для операций копирования в пределах одной учетной записи. Обратите внимание, что подпись коллективного доступа, указанная по требованию, применяется только к конечному большому двоичному объекту. Доступ к исходному большому двоичному объекту авторизован отдельно, как описано в сведениях для заголовка запроса x-ms-copy-source.

В версии 2012-02-12 и более поздних операция Copy Blob может быть выполнена асинхронно. Эта операция возвращает идентификатор копии, который можно использовать для проверки или аварийного завершения операции копирования. Служба BLOB-объектов копирует BLOB-объекты наилучшим возможным образом.

BLOB-объект источника для операции копирования может представлять собой BLOB-объект блокировки или страницы либо моментальный снимок того или другого. Если BLOB-объект назначения уже существует, он должен иметь тот же тип BLOB-объекта, что и BLOB-объект источника. Все существующие BLOB-объекты назначения будут перезаписаны. BLOB-объект назначения не может быть изменен, пока происходит операция копирования.

Многочисленные незавершенные операции Copy Blob в учетной записи могут обрабатываться последовательно. BLOB-объект назначения может иметь только одну необработанную операцию копирования BLOB-объекта. Иными словами, BLOB-объект не может быть назначением для нескольких незавершенных операций Copy Blob. Попытка применить Copy Blob к BLOB-объекту назначения, который уже имеет незавершенную операцию копирования, оканчивается неудачей с кодом состояния 409 (конфликт).

Только учетные записи хранилища, созданные 7 июня 2012 года или позже, позволяют использовать операцию Copy Blob для копирования из другой учетной записи хранилища. Попытка копирования из другой учетной записи хранилища в учетную запись, созданную до 7 июня 2012 года, завершается неудачей с кодом состояния 400 (недопустимый запрос).

Операция Copy Blob всегда копирует весь BLOB-объект источника; копирование диапазона байтов или набора блокировок не поддерживается.

Операция Copy Blob может принимать любую из следующих форм:

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

  • Можно копировать BLOB-объект источника в BLOB-объект назначения с тем же именем, фактически заменяя BLOB-объект назначения. Такая операция копирования приводит к удалению всех незафиксированных блокировок и перезаписи метаданных BLOB-объекта.

  • Можно скопировать моментальный снимок и заменить им исходный большой двоичный объект. Переместив моментальный снимок на место исходного большого двоичного объекта, можно восстановить более раннюю версию объекта.

  • Можно скопировать моментальный снимок в другой большой двоичный объект с другим именем. Результирующий целевой большой двоичный объект не станет моментальным снимком, а будет большим двоичным объектом, доступным для записи.

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

Если для источника операции копирования предусмотрены значения ETag, то при любых изменениях в источнике во время копирования операция копирования завершается неудачей. Попытка изменить BLOB-объект назначения во время копирования завершается неудачей с кодом 409 (конфликт). Если BLOB-объект назначения имеет бесконечную аренду, то идентификатор аренды необходимо передать в Copy Blob. Аренда с конечным времени существования не допускается.

Значение ETag для BLOB-объекта типа блокировки изменяется при инициировании операции Copy Blob и при завершении копирования. Значение ETag для BLOB-объекта типа страницы изменяется при инициировании операции Copy Blob и продолжает часто изменяться в течение копирования. Содержимое BLOB-объекта типа блокировки является видимым только при использовании метода GET после завершения полного копирования.

Копирование свойств и метаданных BLOB-объекта

При копировании BLOB-объекта в BLOB-объект назначения копируются следующие системные свойства с теми же значениями:

  • Content-Type

  • Content-Encoding

  • Content-Language

  • Content-Length

  • Cache-Control

  • Content-MD5

  • Content-Disposition

  • x-ms-blob-sequence-number (for page blobs only)

Кроме того, список зафиксированных блокировок BLOB-объекта источника копируется в BLOB-объект назначения, если этот BLOB-объект относится к типу блокировки. Все незафиксированные блокировки не копируются.

BLOB-объект назначения всегда имеет тот же размер, что и BLOB-объект источника, поэтому значение заголовка Content-Length для BLOB-объекта назначения согласуется с этим значением для BLOB-объекта источника.

Если BLOB-объект источника и BLOB-объект назначения являются одинаковыми, то Copy Blob удаляет все незафиксированные блокировки. Если в этом случае указаны метаданные, то существующие метаданные перезаписываются новыми метаданными.

Копирование арендованного BLOB-объекта

Операция Copy Blob выполняет только чтение из BLOB-объекта источника, поэтому состояние аренды BLOB-объекта источника не имеет значения. Но операция Copy Blob сохраняет значение ETag BLOB-объекта источника при инициировании копирования. Если значение ETag изменяется до завершения копирования, копирование завершается неудачно. Можно предотвратить изменения в BLOB-объекте источника, арендуя его в течение операции копирования.

Если BLOB-объект назначения имеет активную бесконечную аренду, необходимо указать его идентификатор аренды в вызове операции Copy Blob. Если указанная аренда представляет собой активную аренду с конечным временем существования, этот вызов завершается неудачно с кодом состояния 412 (необходимое условие не выполнено). В то время как копирование остается незавершенным, любая операция аренды применительно к BLOB-объекту назначения завершается неудачно с кодом состояния 409 (конфликт). Таким образом, бесконечная аренда BLOB-объекта назначения блокируется в течение операции копирования, будь то копирование в BLOB-объект назначения с именем, отличным от имени источника, копирование в BLOB-объект назначения с тем же именем, что и у источника, или повышение уровня моментального снимка по отношению к базовому BLOB-объекту. Если клиент указывает идентификатор аренды для большого двоичного объекта, который еще не существует, служба BLOB-объектов возвратит код состояния 412 (необходимое условие не выполнено) для запросов, сделанных к 2013-08-15 и последующей версии. Для предыдущих же версий службы BLOB-объектов возвращается код состояния 201 (создано).

Копирование моментальных снимков

Когда копируется исходный большой двоичный объект, его снимки не копируются. Когда целевой большой двоичный объект перезаписывается копией, все моментальные снимки, связанные с ним, не затрагиваются и остаются под своим именем.

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

Работа с незавершенной копией (версия 2012-02-12 и более новая)

Операция Copy Blob завершает копирование асинхронно. Используйте следующую таблицу для определения очередного шага на основе кода состояния, возвращенного Copy Blob.

 

Код состояния Назначение

202 (принято), x-ms-copy-status: успешно

Копирование завершено успешно.

202 (принято), x-ms-copy-status: ожидание

500 или 503

копия не завершена. Опрашивайте BLOB-объект назначения с использованием Get Blob Properties для проверки значения x-ms-copy-status, пока копирование не завершено или не завершилось неудачно.

4xx, 500 или 503

Ошибка копирования.

Во время операции Copy Blob и после нее свойства BLOB-объекта назначения содержат идентификатор копирования операции Copy Blob и URL-адрес BLOB-объекта источника. После завершения копирования служба BLOB-объектов записывает время и значение результата (success, failed или aborted) в свойства BLOB-объекта назначения. Если операция failed завершается неудачно, заголовок x-ms-copy-status-description содержит строку с подробными сведениями об ошибках.

Незавершенная операция Copy Blob имеет время ожидания 2 недели. Попытка копирования, которая не завершилась после 2 недель, оканчивается по тайм-ауту и оставляет пустой BLOB-объект с полем x-ms-copy-status, заданным равным failed, и значением x-ms-copy-status-description, заданным равным 500 (операция отменена). Временные, не являющиеся неустранимыми ошибки, которые могут происходить во время копирования, могут повлиять на ход выполнения копирования, но не вызвать неудачного его завершения. В этих случаях в x-ms-copy-status-description содержится описание временных ошибок.

Любые попытки изменить или получить моментальный снимок BLOB-объекта назначения во время копирования завершаются неудачно с кодом ошибки 409 (конфликт). Происходит копирование BLOB-объекта.

Вызвав операцию Abort Copy Blob, можно видеть, что заголовок x-ms-copy-status:aborted и BLOB-объект назначения имеют незатронутые метаданные, а длина BLOB-объекта составляет нуль байтов. Можно повторить исходный вызов Copy Blob, чтобы попытаться снова выполнить копирование.

Выставление счетов

На учетную запись назначения операции Copy Blob возлагается оплата за одну транзакцию по инициированию копирования. Кроме того, на нее возлагаются расходы за одну транзакцию применительно к каждому запросу на снятие задания или запросу о состоянии операции копирования.

Если BLOB-объект источника находится в другой учетной записи, то расходы по транзакциям возлагаются на учетную запись источника. Кроме того, если учетные записи источника и назначения находятся в разных регионах (например, на севере США и на юге США), то на учетную запись хранилища источника возлагаются расходы за пропускную способность, используемую для передачи запроса как за исходящие данные. Передача исходящих данных между учетными записями в пределах одного и того же региона осуществляется бесплатно.

При копировании BLOB-объекта источника в BLOB-объект назначения с другим именем в той же учетной записи используются дополнительные ресурсы хранения для нового BLOB-объекта, поэтому операция копирования приводит к тому, что начисляется оплата за использование вычислительной мощности учетной записи хранилища в части этих дополнительных ресурсов. Но если имена BLOB-объектов источника и назначения одинаковы в одной и той же учетной записи (например, при повышении уровня моментального снимка до ее базового BLOB-объекта), то не взыскивается дополнительная оплата, не считая той, что связана с дополнительным копированием метаданных, хранимых в версии 2012-02-12 и более новой версии.

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

Была ли вам полезна эта информация?
(1500 символов осталось)
Спасибо за ваш отзыв
Показ:
© 2014 Microsoft