【问题标题】:How to upload a file from azure blob storage to Linux VM created on azure如何将文件从 azure blob 存储上传到在 azure 上创建的 Linux VM
【发布时间】:2020-01-03 09:12:22
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    最简单且无需任何工具的方法是为 blob 生成 SAS 令牌并运行 CURL。

    生成 SAS

    然后是卷曲

    curl <blob_sas_url> -o output.txt
    

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

    【讨论】:

      【解决方案2】:

      请参考这个博客:How to copy data to VM from blob storage,它给你一个解决Data Factory问题的方法:

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

      在使用“复制向导”之前,我们需要在 VM 上安装数据管理网关并注册它。

      我们需要将 blob 存储指定为源,在目标中我们需要选择“文件服务器共享”选项。在“文件服务器共享”选项中,我们需要指定我认为管道用于登录 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。您可以下载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)

      希望这会有所帮助。

      【讨论】:

        【解决方案3】:

        您可以通过多种方式将 Blob 存储中的内容复制到 VM 上的磁盘:

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

        SO 上有很多关于这些方法的内容!

        【讨论】:

          【解决方案4】:

          似乎这在任何地方都没有正确记录,所以我分享最基本的方法,即使用适用于 windows/linux 操作系统的 azcopy 工具。这种方法不需要创建凭证/令牌的复杂性。

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

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

          3. 现在可以为虚拟机分配以下级别的权限:

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

          对于这种情况,导航到存储帐户 -> IAM -> 添加角色分配 -> 选择角色“存储 Blob 数据参与者” -> 分配对“虚拟机”的访问权限 -> 选择所需的 VM -> 保存

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

          1. 登录到 VM 并使用身份(从 azcopy 所在的同一位置运行命令) 对于 Windows:azcopy login --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 命令以获取更新后的身份。

          有关 Azcopy 的更多信息,请访问here

          【讨论】:

            猜你喜欢
            • 2020-11-11
            • 2017-01-04
            • 2017-05-06
            • 2014-11-12
            • 2019-12-15
            • 2019-08-13
            • 2020-10-29
            • 2015-05-08
            相关资源
            最近更新 更多