Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
AzCopy — это утилита командной строки, которую можно использовать для копирования блобов или файлов в учетную запись хранения или из неё. Эта статья помогает копировать объекты, каталоги и контейнеры из Amazon Web Services (AWS) S3 в хранилище BLOB-объектов Azure с помощью AzCopy.
Примечание.
AzCopy поддерживает стандартные URL-адреса в стиле виртуального узла или пути, определенные AWS. Например, https://bucket.s3.amazonaws.com
или https://s3.amazonaws.com/bucket
.
Выбор способа предоставления учетных данных авторизации
Чтобы авторизоваться в Azure Storage, используйте идентификатор Microsoft Entra или токен Подписанного доступа (SAS).
Для авторизации с помощью AWS S3 используйте ключ доступа AWS и секретный ключ доступа.
Авторизация с помощью службы хранилища Azure
См. статью "Начало работы с AzCopy" , чтобы скачать AzCopy и выбрать способ предоставления учетных данных авторизации службе хранилища.
Примечание.
В примерах этой статьи предполагается, что вы выполнили проверку подлинности удостоверения с помощью AzCopy login
команды. Затем AzCopy использует учетную запись Microsoft Entra для авторизации доступа к данным в хранилище блобов.
Если вы предпочитаете использовать для авторизации доступа к данным большого двоичного объекта маркер SAS, маркер можно добавить к URL-адресу ресурса в каждой команде AzCopy.
Например: https://mystorageaccount.blob.core.windows.net/mycontainer?<SAS-token>
.
Авторизация с помощью AWS S3
Соберите ключ доступа AWS и секретный ключ доступа, а затем задайте следующие переменные среды:
Операционная система | Приказ |
---|---|
Виндоус | PowerShell:$env:AWS_ACCESS_KEY_ID=<access-key> $env:AWS_SECRET_ACCESS_KEY=<secret-access-key> В командной строке используйте set AWS_ACCESS_KEY_ID=<access-key> .set AWS_SECRET_ACCESS_KEY=<secret-access-key> |
Линукс | export AWS_ACCESS_KEY_ID=<access-key> export AWS_SECRET_ACCESS_KEY=<secret-access-key> |
macOS | export AWS_ACCESS_KEY_ID=<access-key> export AWS_SECRET_ACCESS_KEY=<secret-access-key> |
Эти учетные данные используются для создания предварительно подписанных URL-адресов, которые используются для копирования объектов.
Копирование объектов, каталогов и контейнеров
AzCopy использует API PUT Block From URL , поэтому данные копируются непосредственно между AWS S3 и серверами хранения. Эти операции копирования не используют пропускную способность сети компьютера.
Подсказка
Примеры в этом разделе заключают аргументы пути в одинарные кавычки (''). Используйте одинарные кавычки во всех командных оболочках, кроме командной оболочки Windows (cmd.exe). Если вы используете командную оболочку Windows (cmd.exe), заключите аргументы пути в двойные кавычки ("") вместо одинарных (").
Эти примеры также работают с учетными записями, имеющими иерархическое пространство имен.
Доступ с несколькими протоколами в Data Lake Storage позволяет использовать один и тот же синтаксис URL-адресов (blob.core.windows.net
) в этих учетных записях.
Копирование объекта
Используйте тот же синтаксис URL-адреса (blob.core.windows.net
) для учетных записей с иерархическим пространством имен.
Синтаксис
azcopy copy 'https://s3.amazonaws.com/<bucket-name>/<object-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>'
Пример
azcopy copy 'https://s3.amazonaws.com/mybucket/myobject' 'https://mystorageaccount.blob.core.windows.net/mycontainer/myblob'
Примечание.
Примеры в этой статье используют URL-адреса с путевым стилем для хранилищ AWS S3 (например: http://s3.amazonaws.com/<bucket-name>
).
Вы также можете использовать URL-адреса в стиле виртуального хостинга (например: http://bucket.s3.amazonaws.com
).
Дополнительные сведения о виртуальном размещении контейнеров см. в статье "Виртуальный хостинг контейнеров".
Копирование каталога
Используйте тот же синтаксис URL-адреса (blob.core.windows.net
) для учетных записей с иерархическим пространством имен.
Синтаксис
azcopy copy 'https://s3.amazonaws.com/<bucket-name>/<directory-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true
Пример
azcopy copy 'https://s3.amazonaws.com/mybucket/mydirectory' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true
Примечание.
В этом примере флаг --recursive
используется для копирования файлов во всех вложенных каталогах.
Копирование содержимого каталога
Содержимое каталога можно скопировать без копирования самого каталога с помощью символа подстановочного знака (*).
Синтаксис
azcopy copy 'https://s3.amazonaws.com/<bucket-name>/<directory-name>/*' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<directory-name>' --recursive=true
Пример
azcopy copy 'https://s3.amazonaws.com/mybucket/mydirectory/*' 'https://mystorageaccount.blob.core.windows.net/mycontainer/mydirectory' --recursive=true
Копирование контейнера
Используйте тот же синтаксис URL-адреса (blob.core.windows.net
) для учетных записей с иерархическим пространством имен.
Синтаксис
azcopy copy 'https://s3.amazonaws.com/<bucket-name>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>' --recursive=true
Пример
azcopy copy 'https://s3.amazonaws.com/mybucket' 'https://mystorageaccount.blob.core.windows.net/mycontainer' --recursive=true
Скопировать все бакеты во всех регионах
Используйте тот же синтаксис URL-адреса (blob.core.windows.net
) для учетных записей с иерархическим пространством имен.
Синтаксис
azcopy copy 'https://s3.amazonaws.com/' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true
Пример
azcopy copy 'https://s3.amazonaws.com' 'https://mystorageaccount.blob.core.windows.net' --recursive=true
Копировать все бакеты в выбранном регионе S3
Используйте тот же синтаксис URL-адреса (blob.core.windows.net
) для учетных записей с иерархическим пространством имен.
Синтаксис
azcopy copy 'https://s3-<region-name>.amazonaws.com/' 'https://<storage-account-name>.blob.core.windows.net' --recursive=true
Пример
azcopy copy 'https://s3-rds.eu-north-1.amazonaws.com' 'https://mystorageaccount.blob.core.windows.net' --recursive=true
Обработка различий в правилах именования объектов
AWS S3 имеет другой набор соглашений об именовании для имен корзин по сравнению с контейнерами BLOB-объектов Azure. Вы можете ознакомиться с ними здесь. Если вы решили скопировать группу контейнеров в учетную запись хранения Azure, операция копирования может завершиться ошибкой из-за различий именования.
AzCopy обрабатывает два наиболее распространенных проблемы, которые могут возникнуть; контейнеры, содержащие периоды и контейнеры, содержащие последовательные дефисы. Имена контейнеров AWS S3 могут содержать периоды и последовательные дефисы, но контейнер в Azure не может. AzCopy заменяет периоды дефисом и последовательными дефисами числом, которое представляет число последовательных дефисов (например, именованный my----bucket
контейнер становится my-4-bucket
.
Кроме того, как AzCopy копирует файлы, он проверяет наличие конфликтов именования и пытается устранить их. Например, если есть контейнеры с именем bucket-name
и bucket.name
, AzCopy сначала обрабатывает контейнер с именем bucket.name
в bucket-name
, а затем в bucket-name-2
.
Обработка различий в метаданных объекта
AWS S3 и Azure разрешают различные наборы символов в именах ключей объектов. Здесь вы можете ознакомиться с символами, которые использует AWS S3. На стороне Azure ключи BLOB-объектов соответствуют правилам именования идентификаторов C#.
В рамках команды AzCopy copy
можно указать значение для необязательного s2s-handle-invalid-metadata
флага, указывающего способ обработки файлов, в которых метаданные файла содержат несовместимые имена ключей. В следующей таблице описывается каждое значение флага.
Значение флага | Описание |
---|---|
ИсключитьЕслиНедействительно | (параметр по умолчанию) Метаданные не включаются в передаваемый объект. AzCopy регистрирует предупреждение. |
FailIfInvalid | Объекты не копируются. AzCopy регистрирует ошибку и включает её в количество неудачных попыток, которое отображается в сводке по передаче. |
RenameIfInvalid | AzCopy разрешает недопустимый ключ метаданных и копирует объект в Azure, используя разрешённую пару ключ-значение метаданных. Сведения о том, какие действия выполняет AzCopy для переименования ключей объектов, см. в разделе "Как AzCopy переименовывает ключи объектов " ниже. Если AzCopy не удается переименовать ключ, объект не будет скопирован. |
Как AzCopy переименовывает ключи объектов
AzCopy выполняет следующие действия:
Заменяет недопустимые символы на "_".
Добавляет строку
rename_
в начало нового допустимого ключа.Этот ключ будет использоваться для сохранения исходного значения метаданных.
Добавляет строку
rename_key_
в начало нового допустимого ключа. Этот ключ будет использоваться для сохранения исходного недопустимого ключа метаданных. Этот ключ можно использовать для попытки восстановления метаданных в среде Azure, так как ключ метаданных сохраняется как значение в службе хранения объектов Blob.
Дальнейшие действия
Дополнительные примеры см. в следующих статьях:
- Примеры: загрузка
- Примеры: скачивание
- Примеры: копирование между учетными записями
- Примеры: синхронизация
- Примеры: облачное хранилище Google
- Примеры. Файлы Azure
- Руководство. Перенос локальных данных в облачное хранилище с помощью AzCopy
Ознакомьтесь со статьями ниже, чтобы получить сведения о настройке параметров, оптимизации производительности и устранении проблем: