Передача файлов с помощью AzCopy: OAuth и токен SAS

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

AzCopy – это автономная утилита, которая позволяет управлять хранилищем Azure. С помощью AzCopy можно выполнить несколько операций. В этой статье мы сосредоточимся на:

Давайте начнем!

Если вы лучше усваиваете информацию через видео, вы также можете посмотреть видео от TechSnips, тесно связанное с тем, что вы узнаете в этой статье.

Предварительные требования

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

Создание новых контейнеров хранения

Во-первых, давайте используем AzCopy для создания новых контейнеров хранения в существующем хранилище. В приведенном вами примере вы создадите два новых контейнера с именами container1 и container2.

Примечание: Перед созданием нового контейнера вы должны знать URL-адрес конечной точки контейнера. URL-адрес конечной точки следует формату: https://[имя_хранилища].blob.core.windows.net/[имя_контейнера].

Сначала определите URL-адрес конечной точки. В этом примере контейнеры будут созданы в учетной записи хранилища с именем storageaccount1207, создав два URL-адреса конечной точки:

Теперь, когда вы знаете URL-адреса конечных точек, используйте команду azcopy make, передав каждый URL-адрес конечной точки в качестве параметра, как показано ниже.

> azcopy make https://storageaccount1207.blob.core.windows.net/container1
> azcopy make https://storageaccount1207.blob.core.windows.net/container2
Creating new containers in the storageaccount1207 storage account

Копирование файлов в/из контейнеров Azure

После создания контейнера хранения вы, вероятно, спросите: “Как я могу загрузить в хранилище блобов Azure?”.  Вы можете сделать это с помощью AzCopy, используя команду azcopy copy. Вы можете использовать AzCopy для копирования файлов PST, VHD и других.

Использование аутентификации OAuth

При использовании AzCopy для копирования файлов в блобы у вас есть несколько вариантов аутентификации. Поскольку предполагается, что вы уже прошли аутентификацию в Azure Storage (так как это было в предварительных требованиях), вы можете просто запустить azcopy copy, указав локальный путь к файлу, за которым следует URL-адрес конечной точки контейнера, как показано ниже.

Не указывая никаких других параметров, вы используете аутентификацию OAuth.

> azcopy copy c:\myDir\file1.txt https://storageaccount1207.blob.core.windows.net/container1
Upload file to Azure Storage using OAuth

Как вы узнаете, что файл скопирован в контейнер Azure blob? Вы можете использовать команду azcopy list [URL контейнера]. Смотрите пример ниже, показывающий, что файл file1.txt существует.

> azcopy list https://storageaccount1207.blob.core.windows.net/container1
List the contents of the Azure blob container

Чтобы загрузить файл из блоба Azure в локальный каталог, вам нужно только поменять местами аргументы источника и назначения. Смотрите пример ниже.

> azcopy copy https://storageaccount1207.blob.core.windows.net/container1/file1.txt>c:\myDir
Download file from Azure Storage using OAuth authentication

Использование токена общего доступа (SAS)

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

После того как у вас есть доступен токен SAS, вы можете добавить его к URL-адресу контейнера назначения как HTTP-параметр, как показано ниже.

> azcopy copy c:\myDir\file1.txt 'https://storageaccount1207.blob.core.windows.net/container1?sv=2019-02-02&sr=c&sig=LgFsqIRHZovsSjpAVNAyyyy4tnDJ%2BxNh%2B1Cq3rY4Gbk%3D&se=2019-12-09T06%3A34%3A30Z&sp=rw'

Если вы используете PowerShell и сохраняете токен в переменную (например, $token), вы можете передать эту переменную вместо полной строки токена, как показано в команде ниже.

> azcopy copy c:\myDir\file1.txt "https://storageaccount1207.blob.core.windows.net/container1?$token"
Copy file to Azure Container using SAS Token Authentication

Используя тот же токен (предполагая, что он все еще действителен), вы также можете загружать файлы из хранилища Azure в локальное хранилище. Приведенный ниже пример копирует файл file1.txt из хранилища Azure с помощью маркера SAS.

В приведенном ниже коде вы можете видеть, что на этот раз вместо добавления токена после имени контейнера сначала добавляется имя файла. Это указывает AzCopy скопировать определенный файл с использованием аутентификации SAS.

> azcopy copy ('https://storageaccount1207.blob.core.windows.net/container1/file1.txt'+$token) C:\MyDir\
Copy file from Azure Container with SAS Token

Копирование каталога в/из хранилища Azure

Если у вас много файлов для передачи или загрузки из Azure, вы также можете скопировать целые каталоги сразу с помощью azcopy copy. Команда для этого не сильно отличается от той, которую вы используете для копирования одиночных файлов.

Ниже вы можете увидеть команду, которая рекурсивно копирует C:\\MyDir в контейнер blob container1. Ключевым здесь является параметр --recursive. Флаг —recursive в конце команды указывает, что будут скопированы все содержимое родительского каталога и существующие подкаталоги.

> azcopy copy C:\MyDir\ https://storageaccount1207.blob.core.windows.net/container1/ --recursive

Вы можете видеть ниже, что десять файлов внутри папки C:\MyDir были успешно скопированы на основе сводки задания.

Copying a directory and its contents

Копирование файлов между контейнерами хранилища Azure

В этой статье вы довольно много использовали команду azcopy copy. Нет необходимости останавливаться сейчас! Вы можете копировать каталоги и файлы to/from on-prem, а также копировать блобы между контейнерами хранения.

Вместо использования локального пути к файлу вы измените параметры, чтобы использовать один URL контейнера блобов как источник и другой URL контейнера блобов как место назначения.

Вы уже создали два контейнера хранения с именами container1 и container2. В этом разделе давайте скопируем файлы, каталоги и даже весь контейнер блобов из container1 в container2.

Чтобы скопировать файлы из одного контейнера в другой, сначала сгенерируйте новый токен SAS. Поскольку два контейнера принадлежат одному и тому же учетной записи хранения, тот же токен можно использовать и для источника, и для места назначения.

Предполагая, что вы сохранили строку токена в переменной с именем $token (если запускаете azcopy с помощью PowerShell), вы можете легко скопировать все данные из одного контейнера хранения в другой, как показано ниже.

Напоминание: Посмотрите статью Как создать токен SAS Azure для доступа к учетным записям хранения, если не знаете, как сгенерировать токен SAS.

> azcopy copy ('https://storageaccount1207.blob.core.windows.net/container1'+$token) ('https://storageaccount1207.blob.core.windows.net/container2'+$token) --recursive
Copying data between containers using SAS Token authentication

Другие полезные операции AzCopy

Помимо копирования файлов и каталогов, с помощью AzCopy можно выполнить другие операции копирования. Некоторые из них:

  • Копирование конкретных файлов (фильтрованное).
  • Копирование каталога в другой каталог в контейнере блобов.
  • Копирование с Amazon AWS в хранилище Azure.

Если вы хотите узнать о всех возможностях AzCopy, ознакомьтесь с справочным содержанием, запустив azcopy -h. Вы найдете много других полезных команд помимо команды copy, на которой вы сосредоточились в этой статье. Ниже вы можете увидеть снимок экрана этих команд.

List of AzCopy Commands

Чтобы узнать больше, посетите страницу AzCopy Copy. Затем вы можете попробовать их самостоятельно, используя техники, изученные в этой статье.

Сводка

В этой статье вы узнали, как использовать AzCopy для передачи файлов между локальным хранилищем и хранилищем Azure. Вы также узнали, как выполнять эти задачи при использовании OAuth и токена Shared Access Signature для аутентификации. Вы видели, какие другие команды AzCopy доступны, и как их найти.

I hope this article has helped you get started with AzCopy and sparked your interest in using it more as part of your administration or development tasks. Thank you!

Source:
https://adamtheautomator.com/azcopy-storage/