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

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

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

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

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

  • Если у исходных BLOB-объектов есть теги индекса и вы хотите сохранить эти теги, необходимо повторно применить их к целевым 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 служба хранилища)

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 служба хранилища)

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 служба хранилища)

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 служба хранилища)

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

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

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

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

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

Чтобы добавить теги, используйте параметр --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-объектов. --blob-type=[BlockBlob|PageBlob|AppendBlob]
Копирование файлов в конкретный уровень хранилища (например, в архивный уровень). --block-blob-tier=[None|Hot|Cool|Archive]
Автоматическое распаковка файлов. --decompress=[gzip|deflate]

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

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

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

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