Отправка файлов в хранилище 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] |
Полный список примеров см. в разделе Параметры.
Следующие шаги
Дополнительные примеры см. в следующих статьях:
- Примеры: скачивание
- Примеры: копирование между учетными записями
- Примеры: синхронизация
- Примеры: контейнеры Amazon S3
- Примеры: облачное хранилище Google
- Примеры. Файлы Azure
- Руководство. Перенос локальных данных в облачное хранилище с помощью AzCopy
Ознакомьтесь со статьями ниже, чтобы получить сведения о настройке параметров, оптимизации производительности и устранении проблем: