使用AzCopy传输文件:OAuth和SAS令牌

现在在IT领域,自动化无处不在。从虚拟机的配置到网站部署,自动化是关键,特别是当你需要处理多个项目时。甚至可以使用一个名为 AzCopy 的实用程序来自动化 Azure 存储和本地计算机之间的文件管理。

  • AzCopy 是一个独立的实用程序,允许管理 Azure 存储。使用 AzCopy,可以执行多个操作。在本文中,我们将重点关注:创建存储容器
  • 将本地文件复制到容器
  • 在容器之间复制文件

让我们开始吧!

如果您更喜欢通过视频学习,您还可以查看一个与本文内容密切相关的 TechSnips 视频。

先决条件

本文将通过演示各种任务的步骤来进行讲解。如果您想跟着做,请确保在开始之前满足以下要求清单。

创建新的存储容器

首先,让我们使用AzCopy在现有的存储账户中创建新的存储容器。在您即将使用的示例中,您将创建两个名为container1container2的新容器。

注意:在创建新容器之前,您必须了解容器的端点URL。端点URL遵循以下格式:https://[storageaccountname].blob.core.windows.net/[container_name]。

首先,定义端点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 Blob存储?”。 您可以使用AzCopy使用azcopy copy命令实现。 您可以使用AzCopy复制PST文件、VHD文件等。

使用 OAuth 认证

当使用 AzCopy 复制文件到 Blob 时,您有几种认证选项。由于假定您已经对 Azure 存储进行了身份验证(因为这是先决条件),您可以简单地运行 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 Blob 下载到本地目录,您只需要交换源和目标参数的位置。请参见下面的示例。

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

使用共享访问签名(SAS)令牌

要使用 SAS 令牌,您必须首先生成一个。如果您不知道如何生成 SAS 令牌,请查看 如何生成 Azure SAS 令牌以访问存储帐户 文章。

一旦您有了可用的 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 存储下载到本地存储。下面的示例将使用 SAS 令牌从 Azure 存储复制 file1.txt 文件。

在下面的代码中,您可以看到这次不是将令牌附加在容器名称后面,而是先添加了文件名。这指示 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命令。现在不需要停下来!您不仅可以复制目录和文件到/从本地,还可以在存储容器之间复制 Blob。

与其使用本地文件路径,您可以更改参数,将一个 Blob 容器 URL 作为源,并将另一个 Blob 容器 URL 作为目标。

您已经创建了两个名为container1container2的存储容器。在本节中,让我们从container1复制文件、目录甚至整个 Blob 容器到container2

要将文件从一个容器复制到另一个容器,首先生成一个新的 SAS 令牌。由于两个容器属于同一个存储账户,因此可以为源和目标使用相同的令牌。

假设您已将令牌字符串保存到名为$token的变量中(如果使用 PowerShell 运行azcopy),您可以像下面所示轻松地将所有数据从一个存储容器复制到另一个存储容器。

提醒:如果不知道如何生成 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 复制操作。其中一些是:

  • 复制特定文件(经过筛选)。
  • 将目录复制到 Blob 容器中的另一个目录中。
  • 从 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-storage/