Передача файлов с помощью 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. Нет смысла останавливаться сейчас! Не только вы можете копировать каталоги и файлы в/из локальной среды, но также можете копировать блобы между контейнерами хранения.

Вместо использования локального пути к файлу, вы измените параметры, чтобы использовать один 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. Затем вы можете попробовать это самостоятельно, используя техники, которые вы узнали в этой статье.

Итог

В этой статье вы узнали, как использовать AzCopy для передачи файлов между локальным хранилищем и хранилищем Azure. Вы также узнали, как выполнять эти задачи при использовании аутентификации OAuth и токена с общим доступом для подписи. Вы видели, какие еще команды 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/