Отправка файлов в хранилище BLOB-объектов Azure с помощью AzCopy

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

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

Начать

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

Примечание.

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

Если вы предпочитаете использовать для авторизации доступа к данным большого двоичного объекта маркер SAS, маркер можно добавить к URL-адресу ресурса в каждой команде AzCopy. Например: 'https://<storage-account-name>.blob.core.windows.net/<container-name><SAS-token>'.

Создание контейнера

Для создания контейнера можно использовать команду azcopy make.

Совет

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

Синтаксис

azcopy make 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-name>'

Пример

azcopy make 'https://mystorageaccount.blob.core.windows.net/mycontainer'

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

azcopy make 'https://mystorageaccount.dfs.core.windows.net/mycontainer'

Подробную справочную документацию можно найти в описании azcopy make.

Отправка файла

Отправьте файл с помощью команды azcopy copy.

Совет

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

Синтаксис

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

Пример

azcopy copy 'C:\myDirectory\myTextFile.txt' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myTextFile.txt'

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

azcopy copy 'C:\myDirectory\myTextFile.txt' 'https://mystorageaccount.dfs.core.windows.net/mycontainer/myTextFile.txt'

Кроме того, файл можно загрузить, используя подстановочный знак (*) в любом месте пути к файлу или имени файла. Например, 'C:\myDirectory\*.txt' или C:\my*\*.txt.

Отправка каталога

Отправьте каталог с помощью команды azcopy copy.

В этом примере каталог (и все файлы в этом каталоге) копируется в контейнер больших двоичных объектов. В результате каталог будет находиться в контейнере с тем же именем.

Совет

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

Синтаксис

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

Пример

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --recursive

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

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.dfs.core.windows.net/mycontainer' --recursive

Чтобы выполнить копирование в каталог в контейнере, просто укажите имя этого каталога в командной строке.

Пример

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myBlobDirectory' --recursive

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

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.dfs.core.windows.net/mycontainer/myBlobDirectory' --recursive

Если указать имя каталога, который не существует в контейнере, AzCopy создаст новый каталог с этим именем.

Отправка содержимого каталога

Отправьте содержимое каталога с помощью команды azcopy copy. Используйте подстановочный знак (*), чтобы отправить содержимое, не копируя сам каталог с этим содержимым.

Совет

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

Синтаксис

azcopy copy '<local-directory-path>\*' 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<directory-path>'

Пример

azcopy copy 'C:\myDirectory\*' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myBlobDirectory'

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

azcopy copy 'C:\myDirectory\*' 'https://mystorageaccount.dfs.core.windows.net/mycontainer/myBlobDirectory'

Добавьте флаг --recursive, чтобы отправить файлы во все подкаталоги.

Отправка определенных файлов

Вы можете отправлять определенные файлы с помощью полных имен файлов, частичных имен с подстановочными знаками (*) или с помощью дат и времени.

Совет

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

Указание нескольких полных имен файлов

Выполните команду azcopy сopy, используя параметр --include-path. Разделите имена файлов точкой с запятой (;).

Синтаксис

azcopy copy '<local-directory-path>' 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' --include-path <semicolon-separated-file-list>

Пример

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --include-path 'photos;documents\myFile.txt' --recursive'

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

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.dfs.core.windows.net/mycontainer' --include-path 'photos;documents\myFile.txt' --recursive'

В этом примере AzCopy передает каталог C:\myDirectory\photos и файл C:\myDirectory\documents\myFile.txt. Включите параметр --recursive для перемещения всех файлов в каталог C:\myDirectory\photos.

Кроме того, файлы можно исключить с помощью параметра --exclude-path. Дополнительные сведения см. в справочных документах по azcopy сopy.

Использование подстановочных знаков

Выполните команду azcopy сopy, используя параметр --include-pattern. Укажите частичные имена, которые содержат подстановочные знаки. Разделяйте имена точкой с запятой (;).

Синтаксис

azcopy copy '<local-directory-path>' 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-name>' --include-pattern <semicolon-separated-file-list-with-wildcard-characters>

Пример

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --include-pattern 'myFile*.txt;*.pdf*'

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

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.dfs.core.windows.net/mycontainer' --include-pattern 'myFile*.txt;*.pdf*'

Кроме того, файлы можно исключить с помощью параметра --exclude-pattern. Дополнительные сведения см. в справочных документах по azcopy сopy.

Параметры --include-pattern и --exclude-pattern применяются только к именам файлов, а не к пути. Если необходимо скопировать все текстовые файлы, существующие в дереве каталогов, используйте параметр-recursive для получения всего дерева каталогов, а затем — параметр -include-pattern и укажите,*.txt, чтобы получить все текстовые файлы.

Передача файлов, которые были изменены до или после определенных даты и времени

Выполните команду azcopy сopy, используя параметр --include-before или --include-after. Укажите дату и время в формате ISO-8601 (например: 2020-08-19T15:04:00Z).

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

Синтаксис

azcopy copy '<local-directory-path>\*' 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-or-directory-name>' --include-after <Date-Time-in-ISO-8601-format>

Пример

azcopy copy 'C:\myDirectory\*' 'https://mystorageaccount.blob.core.windows.net/mycontainer/FileDirectory'  --include-after '2020-08-19T15:04:00Z'

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

azcopy copy 'C:\myDirectory\*' 'https://mystorageaccount.dfs.core.windows.net/mycontainer/FileDirectory'   --include-after '2020-08-19T15:04:00Z'

Подробные сведения см. в справочной документации по azcopy сopy.

Отправка с помощью тегов индекса

Вы можете отправить файл и добавить теги индекса BLOB-объектов в целевой BLOB-объект.

Если вы используете авторизацию Microsoft Entra, субъект безопасности должен быть назначен роли владельца данных BLOB-объектов хранилища или предоставить разрешение 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), заключите аргументы пути в двойные кавычки ("") вместо одинарных (").

Отправка файла

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

Отправка каталога

azcopy copy 'C:\myDirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --recursive --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

Отправка содержимого каталога

azcopy copy 'C:\myDirectory\*' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myBlobDirectory' --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'

Примечание.

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

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

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

Сценарий Флаг
Отправьте файлы в виде добавочных или страничных BLOB-объектов. --blob-type=[BlockBlob|PageBlob|AppendBlob]
Отправьте файлы на конкретный уровень хранилища (например, на уровень архива). --block-blob-tier=[None|Hot|Cool|Archive]

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

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

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

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