Поделиться через


Копирование BLOB-объектов между учетными записями хранения Azure с помощью AzCopy

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

Примеры других типов задач, таких как отправка файлов, скачивание блобов и синхронизация с хранилищем блобов, см. в разделе «Дальнейшие действия» этой статьи.

AzCopy использует API типа сервер-сервер, поэтому данные копируются непосредственно между серверами хранилища.

Начало работы

Ознакомьтесь со статьей Начало работы с AzCopy, чтобы получить сведения о том, как скачать AzCopy, а также о способах предоставления учетных данных авторизации в службе хранилища.

Примечание.

В примерах этой статьи предполагается, что вы предоставляете учетные данные авторизации с помощью идентификатора Microsoft Entra и что удостоверение Microsoft Entra имеет соответствующие назначения ролей для исходных и целевых учетных записей.

Кроме того, можно добавить маркер SAS к исходному или целевому URL-адресу в каждой команде AzCopy. Например: azcopy copy 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path><SAS-token>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path><SAS-token>'.

Рекомендации

Примените следующие рекомендации к командам AzCopy.

  • Если вы используете авторизацию Microsoft Entra для источника и назначения, обе учетные записи должны принадлежать одному клиенту Microsoft Entra.

  • Клиент должен иметь сетевой доступ как к исходным, так и к целевым учетным записям хранения.

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

    Дополнительные сведения о поддерживаемых топологиях сети при копировании между учетными записями см. в разделе "Копирование BLOB-объектов между учетными записями хранения с ограничением доступа".

  • При копировании в учетную запись хранения блочных BLOB-объектов цен. категории "Премиум" исключите уровень доступа BLOB-объекта из операции копирования, задав для s2s-preserve-access-tier значение false (например, --s2s-preserve-access-tier=false). Учетные записи хранения блочных BLOB-объектов цен. категории "Премиум" не поддерживают уровни доступа.

  • Пропускную способность операций копирования можно увеличить, задав значение переменной среды AZCOPY_CONCURRENCY_VALUE. Узнать больше можно из статьи Увеличение степени параллелизма.

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

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

Скопируйте BLOB-объект в другую учетную запись хранения с помощью команды azcopy copy.

Совет

В этом примере аргументы пути заключены в одинарные кавычки (' '). Используйте одинарные кавычки во всех командных оболочках, кроме командной оболочки Windows (cmd.exe). Если вы используете командную оболочку Windows (cmd.exe), заключите аргументы пути в двойные кавычки ("") вместо одинарных (").

Синтаксис

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<blob-path>' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<blob-path>'

Пример

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myTextFile.txt' 'https://mydestinationaccount.blob.core.windows.net/mycontainer/myTextFile.txt'

Пример (конечные точки Data Lake Storage)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/mycontainer/myTextFile.txt' 'https://mydestinationaccount.dfs.core.windows.net/mycontainer/myTextFile.txt'

Операция копирования синхронна. Когда команда возвращается, она указывает, что все файлы копируются.

Копирование каталога

Скопируйте каталог в другую учетную запись хранения с помощью команды azcopy copy.

Совет

В этом примере аргументы пути заключены в одинарные кавычки (' '). Используйте одинарные кавычки во всех командных оболочках, кроме командной оболочки Windows (cmd.exe). Если вы используете командную оболочку Windows (cmd.exe), заключите аргументы пути в двойные кавычки ("") вместо одинарных (").

Синтаксис

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<directory-path>' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' --recursive

Пример

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myBlobDirectory' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive

Пример (конечные точки Data Lake Storage)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/mycontainer/myBlobDirectory' 'https://mydestinationaccount.dfs.core.windows.net/mycontainer' --recursive

Операция копирования синхронна. Когда команда возвращается, все файлы копируются.

Копирование контейнера

Скопируйте контейнер в другую учетную запись хранения с помощью команды azcopy copy.

Совет

В этом примере аргументы пути заключены в одинарные кавычки (' '). Используйте одинарные кавычки во всех командных оболочках, кроме командной оболочки Windows (cmd.exe). Если вы используете командную оболочку Windows (cmd.exe), заключите аргументы пути в двойные кавычки ("") вместо одинарных (").

Синтаксис

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' --recursive

Пример

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive

Пример (конечные точки Data Lake Storage)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/mycontainer' 'https://mydestinationaccount.dfs.core.windows.net/mycontainer' --recursive

Операция копирования синхронна. Когда команда возвращается, все файлы копируются.

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

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

Совет

В этом примере аргументы пути заключены в одинарные кавычки (' '). Используйте одинарные кавычки во всех командных оболочках, кроме командной оболочки Windows (cmd.exe). Если вы используете командную оболочку Windows (cmd.exe), заключите аргументы пути в двойные кавычки ("") вместо одинарных (").

Синтаксис

azcopy copy 'https://<source-storage-account-name>.<blob or dfs>.core.windows.net/' 'https://<destination-storage-account-name>.<blob or dfs>.core.windows.net/' --recursive

Пример

azcopy copy 'https://mysourceaccount.blob.core.windows.net/' 'https://mydestinationaccount.blob.core.windows.net' --recursive

Пример (конечные точки Data Lake Storage)

azcopy copy 'https://mysourceaccount.dfs.core.windows.net/' 'https://mydestinationaccount.dfs.core.windows.net' --recursive

Операция копирования синхронна. Когда команда возвращается, она указывает, что все файлы копируются.

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

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

Если вы используете авторизацию Microsoft Entra, назначьте субъекту безопасности роль Storage Blob Data Owner или предоставьте ему разрешение на Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/writeоперацию поставщика ресурсов Azure с помощью роли Azure, разработанной специально для вас. Если вы используете токен общей подписи доступа (SAS), токен должен предоставить доступ к тегам объекта BLOB через разрешения SAS t.

Чтобы добавить теги, используйте --blob-tags параметр с парой ключ-значение, закодированной в формате URL.

Например, чтобы добавить ключ my tag и значение my tag value, добавьте --blob-tags='my%20tag=my%20tag%20value' его в целевой параметр.

Разделите несколько тегов индекса с амперсандом (&). Например, если вы хотите добавить ключ my second tag и значение my second tag value, полная строка параметра будет --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'.

В следующих примерах показано, как использовать параметр --blob-tags.

Совет

В этих примерах аргументы пути заключаются в одинарные кавычки (''). Используйте одинарные кавычки во всех командных оболочках, кроме командной оболочки Windows (cmd.exe). Если вы используете командную оболочку Windows (cmd.exe), заключите аргументы пути в двойные кавычки ("") вместо одинарных (").

Пример BLOB-объекта


azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myTextFile.txt' 'https://mydestinationaccount.blob.core.windows.net/mycontainer/myTextFile.txt' --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

Пример каталога

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer/myBlobDirectory' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

Пример контейнера

azcopy copy 'https://mysourceaccount.blob.core.windows.net/mycontainer' 'https://mydestinationaccount.blob.core.windows.net/mycontainer' --recursive --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

Пример учетной записи

azcopy copy 'https://mysourceaccount.blob.core.windows.net/' 'https://mydestinationaccount.blob.core.windows.net' --recursive --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

Операция копирования синхронна. Когда команда возвращается, все файлы копируются.

Примечание.

Если вы укажете каталог, контейнер или учетную запись источника, все блобы, которые вы копируете в назначение, будут иметь те же теги, которые вы указали в команде.

Копирование с дополнительными флагами

Вы можете модифицировать операцию копирования с помощью дополнительных флагов. Вот несколько примеров.

Сценарий Флаг
Копирование BLOB-объектов в виде блоков, страниц или добавочных BLOB-объектов. --blob-type=[BlockBlob|PageBlob |AppendBlob]
Копирование файлов в конкретный уровень хранилища (например, в архивный уровень). --block-blob-tier=[None|Горячий|Холодный|Архив]
Автоматическое распаковка файлов. --decompress=[gzip|deflate]

Полный список примеров см. в разделе Параметры.

Указать типы источника и назначения

AzCopy использует --from-to параметр для явного определения типов ресурсов источника и назначения, когда возможен сбой автоматического обнаружения, например в сценариях конвейерной обработки данных или при работе с эмуляторами. Этот параметр помогает AzCopy понять контекст процесса передачи и провести соответствующую оптимизацию.

Значение FromTo Description
BlobBlob Копирование между двумя расположениями хранилища BLOB-объектов Azure
BlobBlobFS Копирование из хранилища BLOB-объектов Azure в Azure Data Lake 2-го поколения (BLOBFS)
BlobFSBlob Копирование из Azure Data Lake 2-го поколения (BLOBFS) в хранилище BLOB-объектов Azure
BlobFSBlobFS Копирование между двумя расположениями Azure Data Lake 2-го поколения (BLOBFS)
BlobFSFile Копирование из Azure Data Lake 2-го поколения (BLOBFS) в хранилище файлов Azure
BlobFile Копирование из хранилища BLOB-объектов Azure в хранилище файлов Azure
FileBlob Копирование из хранилища файлов Azure в хранилище BLOB-объектов Azure
FileBlobFS Копирование из хранилища файлов Azure в Azure Data Lake 2-го поколения (BLOBFS)

Следующие шаги

Дополнительные примеры см. в следующих статьях:

Ознакомьтесь со статьями ниже, чтобы получить сведения о настройке параметров, оптимизации производительности и устранении проблем: