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 Storage?”。您可以使用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 [container 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 Copy 页。然后,您可以使用本文中学到的技巧自行尝试这些命令。

总结

在本文中,您学会了如何使用 AzCopy 在本地和 Azure 存储之间传输文件。您还学会了如何在进行这些任务时使用 OAuth 和 Shared Access Signature Token 进行身份验证。您已经了解了其他可用的 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/