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

現在在資訊技術中無處不在的自動化。從虛擬機器配置到網站部署,自動化是關鍵,特別是當您需要處理多個項目時。甚至可以使用名為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 存储下载到本地存储。以下示例将 file1.txt 文件从带有 SAS 令牌的 Azure 存储复制。

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

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

您已经创建了两个存储容器,分别为 container1container2。在本节中,让我们将文件、目录甚至整个 blob 容器从 container1 复制到 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 和 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-storage/