自动化在当前的IT行业无处不在。从虚拟机的配置到网站部署,自动化至关重要,特别是当您需要处理多个项目时。甚至可以使用一个名为AzCopy的实用程序自动化Azure存储与本地计算机之间的文件管理。
AzCopy是一个独立的实用程序,允许管理Azure存储。使用AzCopy可以执行多个操作。在本文中,我们将重点介绍:
- 创建存储容器
- 将本地文件复制到容器
- 在容器之间复制文件
让我们开始吧!
如果您更喜欢通过视频学习,您也可以观看一个与本文内容密切相关的TechSnips视频。
先决条件
本文将演示各种任务的操作步骤。如果您想跟着操作,请确保在开始之前满足以下要求:
- 一个Azure订阅。如果您还没有,请申请试用订阅。
- Azure存储账户。请参考创建存储账户以了解更多信息。
- AzCopy已下载并进行了身份验证(查看文章如何下载和安装AZCopy工具以了解如何设置)
创建新的存储容器
首先,让我们使用AzCopy在现有存储账户中创建新的存储容器。在您将要使用的示例中,您将创建两个名为container1和container2的新容器。
注意:在创建新容器之前,您必须知道容器的端点URL。端点URL遵循以下格式:https://[storageaccountname].blob.core.windows.net/[container_name]。
首先,定义端点URL。在这个例子中,将在名为storageaccount1207的存储账户中创建两个端点URL:
- https://storageaccount1207.blob.core.windows.net/container1
- https://storageaccount1207.blob.core.windows.net/container2
现在您知道端点URL,使用azcopy make
命令,并将每个端点URL作为参数传递,如下所示。

将文件复制到/从Azure容器
一旦您创建了存储容器,您可能会问:“我如何上传到Azure Blob Storage?”。您可以使用AzCopy的azcopy copy
命令来实现。您可以使用AzCopy复制PST、VHD等文件。
使用OAuth身份验证
当使用AzCopy复制文件到Blob时,您有几种身份验证选项。由于假定您已经对Azure存储进行了身份验证(因为它是先决条件),您只需运行azcopy copy
,指定本地文件路径,然后跟随容器端点URL,如下所示。
通过不指定任何其他参数,您正在使用OAuth身份验证。

如何确认文件已复制到Azure Blob容器?您可以使用azcopy list [container url]
命令。请参见下面的示例,显示file1.txt
文件已存在。

要将文件从Azure Blob下载到本地目录,您只需交换源和目标参数的位置。请参见下面的示例。

使用共享访问签名(SAS)令牌
要使用SAS令牌,您必须首先生成一个。如果您不知道如何生成SAS令牌,请查看如何生成Azure SAS令牌以访问存储帐户文章。
一旦您有了一个可用的SAS令牌,您可以将令牌附加到目标容器的URL作为HTTP参数,如下所示。
如果您正在使用PowerShell并将令牌存储到一个变量中(例如$token
),您可以将该变量传递给命令,而不是完整的令牌字符串。

使用相同的令牌(假设仍在有效期内),您还可以将文件从Azure存储下载到本地存储。下面的示例复制了带有SAS令牌的Azure存储中的file1.txt
文件。
在下面的代码中,您可以看到这次不是在容器名称后附加令牌,而是首先添加了文件名。这指示AzCopy使用SAS身份验证复制特定文件。

将目录复制到/从Azure存储
如果您有许多文件要从Azure传输或下载,您也可以一次复制整个目录使用azcopy copy
。这样做的命令与复制单个文件时使用的命令并没有太大不同。
下面是一个命令,它将C:\\MyDir
递归地复制到Blob容器container1。这里的--recursive
参数是关键。命令末尾的—recursive
标志指示将复制所有父目录和可能存在的子目录中的所有内容。
您可以看到C:\MyDir文件夹内的十个文件根据作业摘要已全部成功复制。

在Azure存储容器之间复制文件
在本文中,您一直在大量使用azcopy copy
命令。现在没有停下来的必要!您不仅可以将目录和文件复制到/从本地,还可以将 blob 复制到存储容器之间。
与其使用本地文件路径,您可以更改参数,将一个 blob 容器 URL 用作源,并将另一个 blob 容器 URL 用作目标。
您已经创建了两个名为container1和container2的存储容器。在本节中,让我们从container1复制文件、目录甚至整个 blob 容器到container2。
要将文件从一个容器复制到另一个容器,首先生成一个新的 SAS 令牌。由于这两个容器属于同一个存储账户,所以可以将相同的令牌用于源和目标。
假设您已将令牌字符串保存到名为$token
的变量中(如果使用 PowerShell 运行azcopy),您可以轻松地将所有数据从一个存储容器复制到另一个存储容器,如下所示。
提示:如果您不知道如何生成 SAS 令牌,请查看如何生成 Azure SAS 令牌以访问存储账户文章。

其他有用的 AzCopy 操作
除了复制文件和文件夹之外,您还可以使用 AzCopy 执行其他复制操作。其中一些包括:
- 复制特定文件(经过筛选)。
- 将目录复制到 blob 容器中的另一个目录中。
- 从 Amazon AWS 复制到 Azure 存储。
如果您想了解 AzCopy 的全部功能,请运行 azcopy -h
查看帮助内容。除了本文中专注介绍的 copy
命令之外,您还会找到许多其他有用的命令。您可以在下面看到这些命令的截图。

要了解更多信息,请访问 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!