如何将文件从 Azure Blob 存储上传到在 Azure 上创建的 Linux 虚拟机

How to upload a file from azure blob storage to Linux VM created on azure

我的 Azure Blob 存储容器中有一个大文件。我想将我的文件从 blob 存储移动到 Linux 在 azure 上创建的 VM> 如何使用数据工厂来做到这一点?或任何 Powershell 命令?

将内容从 blob 存储复制到 VM 上的磁盘有多种选择:

 1. Use AzCopy 
 2. Use Azure Pipelines - File copy task
 3. Use Powershell cmdlets

在 SO!

上有很多关于这些方法的内容可用

最简单且无需任何工具的方法是为 blob 和 运行 CURL.

生成 SAS 令牌

生成 SAS

然后CURL

curl <blob_sas_url> -o output.txt

如果您每次都需要自动化,您可以从脚本生成 SAS URL 或者只使用 AzCopy。

请参考本博客:How to copy data to VM from blob storage, it gives you a way to solve the problem with Data Factory:

“对于将来可能遇到同样问题的任何人,我使用 ADF 中的 'copy wizard' 解决了我的问题。

我们需要在VM上安装Data Management Gateway并注册后才能使用'copy wizard'。

我们需要将 blob 存储指定为源,在目标中我们需要选择 'File Server Share' 选项。在 'File Server Share' 选项中,我们需要指定我认为管道用于登录 VM 的用户凭据,管道将在 VM 上复制数据的文件夹。"

从 Azure 博客存储文档中,还有另一种方法可以帮助您 Mount Blob storage as a file system with blobfuse on Linux

Blobfuse 是 Azure Blob 存储的虚拟文件系统驱动程序。 Blobfuse 允许您通过 Linux 文件系统访问存储帐户中现有的块 blob 数据。 Blobfuse 使用以正斜杠“/”作为分隔符的虚拟目录方案。

本指南向您展示如何使用 blobfuse,以及如何在 Linux 上安装 Blob 存储容器和访问数据。要了解有关 blobfuse 的更多信息,请阅读 blobfuse repository.

中的详细信息

如果要使用AzCopy,可以参考这篇文档Transfer data with AzCopy and Blob storage. You can download the AzCopy for Linux。它提供了上传和下载文件的命令。

例如上传文件:

azcopy copy "<local-file-path>" "https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<blob-name>"

对于 PowerShell,您需要在所有平台上使用 PowerShell Core 6.x 及更高版本。它适用于 Windows 和 Linux 虚拟机,使用 Windows PowerShell 5.1(仅 Windows)或 PowerShell 6(Windows 和 Linux)。

您可以在本文档中找到 PowerShell 命令:Quickstart: Upload, download, and list blobs by using Azure PowerShell

这是另一个 link 谈到的 Copy Files to Azure VM using PowerShell Remoting 6 (Windows and Linux)

希望这对您有所帮助。

似乎这在任何地方都没有正确记录,所以我分享最基本的方法,即使用可用于 windows/linux OS 的 azcopy 工具。这种方法不需要创建 credentials/tokens.

的复杂性
  1. 下载azcopy 其简单的可执行文件,提取后可以直接运行

  2. 为您的虚拟机创建托管身份(系统分配的身份)。导航到 VM-> Identity -> 将 Status 设置为 'ON' -> Save

  3. 现在可以在以下级别为 VM 分配权限:

    • 存储帐户
    • 容器(文件系统)
    • 资源组
    • 订阅

对于这种情况,导航到存储帐户 -> IAM -> 添加角色分配 -> Select 角色 'Storage Blob Data Contributor' -> 分配对 'Virtual machine' 的访问权限 -> Select 所需的虚拟机 -> 保存

注意:如果您在资源组的 IAM 属性上授予对 VM 的访问权限,则该 VM 将能够访问 RG 的所有存储帐户。

  1. 登录到 VM 并假定身份(运行 来自 azcopy 所在相同位置的命令) 对于 windows:azcopy login --identity 对于 linux:./azcopy login --identity

  2. 立即上传或下载文件: azcopy cp "source-file" "storageUri/blob-container/" --recursive=true 示例:azcopy cp "C:\test.txt" "https://mystorageaccount.blob.core.windows.net/backup/" --recursive=true

IAM 权限可能需要几分钟才能传播。如果您在任何地方 change/add permissions/access 级别,运行 azcopy login --identity 命令再次获取更新后的身份。

提供了有关 Azcopy 的更多信息here