如何将文件从azure blob存储上传到在azure上创建的Linux VM

时间:2019-08-30 06:01:22

标签: azure azure-data-factory azure-blob-storage azcopy

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

4 个答案:

答案 0 :(得分:1)

最简单且没有任何工具的是为Blob生成SAS令牌并运行CURL。

生成SAS

enter image description here

然后是CURL

curl <blob_sas_url> -o output.txt

如果每次都需要自动执行此操作,则可以从脚本中生成SAS URL或仅使用AzCopy。

答案 1 :(得分:1)

请参考此博客:How to copy data to VM from blob storage,它为您提供了一种解决Data Factory问题的方法:

“对于将来可能遇到相同问题的任何人,我都使用ADF中提供的“复制向导”解决了我的问题。

在使用“复制向导”之前,我们需要在VM上安装Data Management Gateway并进行注册。

我们需要将blob存储指定为源,而在目标位置,我们需要选择“文件服务器共享”选项。在“文件服务器共享”选项中,我们需要指定用户凭据,我想管道将其用于登录到VM,即管道上将复制数据的VM上的文件夹。”

从Azure Blog存储文档中,可以找到另一种方法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。您可以下载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 PowerShell 5.1(仅Windows)或PowerShell 6(Windows和Linux)的Windows和Linux虚拟机一起使用。

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

这是另一个谈论Copy Files to Azure VM using PowerShell Remoting 6 (Windows and Linux)的链接。

希望这会有所帮助。

答案 2 :(得分:0)

您有很多选项可将内容从Blob存储复制到VM上的磁盘上:

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

关于SO的这些方法,有很多内容可用!

答案 3 :(得分:0)

看来这在任何地方都没有正确记录,因此我分享了最基本的方法,即使用可用于Windows / Linux OS的azcopy工具。这种方法不需要创建凭据/令牌的复杂性。

  1. 下载azcopy 它的简单可执行文件可以在提取后直接运行

  2. 为您的虚拟机创建一个托管身份(系统分配的身份)。导航到VM->身份->将状态设置为“开启”->保存

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

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

在这种情况下,导航到存储帐户-> IAM->添加角色分配->选择角色“存储Blob数据贡献者”->将访问权限分配给“虚拟机”->选择所需的VM-> SAVE

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

  1. 登录到VM并采用身份(从Azcopy所在的同一位置运行命令) 对于Windows:azcopy登录--identity 对于linux:./azcopy login --identity

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

IAM权限可能需要几分钟才能传播。如果您在任何地方更改/添加权限/访问级别,请再次运行azcopy login --identity命令以获取更新的身份。

有关here的更多有关Azcopy的信息,