【发布时间】:2020-01-03 09:12:22
【问题描述】:
我的 azure blob 存储容器上有一个大文件。我想将我的文件从 blob 存储移动到在 azure 上创建的 Linux VM> 如何使用数据工厂来做到这一点?或任何 Powershell 命令?
【问题讨论】:
标签: azure azure-data-factory azure-blob-storage azcopy
我的 azure blob 存储容器上有一个大文件。我想将我的文件从 blob 存储移动到在 azure 上创建的 Linux VM> 如何使用数据工厂来做到这一点?或任何 Powershell 命令?
【问题讨论】:
标签: azure azure-data-factory azure-blob-storage azcopy
请参考这个博客: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)。
希望这会有所帮助。
【讨论】:
您可以通过多种方式将 Blob 存储中的内容复制到 VM 上的磁盘:
1. Use AzCopy
2. Use Azure Pipelines - File copy task
3. Use Powershell cmdlets
SO 上有很多关于这些方法的内容!
【讨论】:
似乎这在任何地方都没有正确记录,所以我分享最基本的方法,即使用适用于 windows/linux 操作系统的 azcopy 工具。这种方法不需要创建凭证/令牌的复杂性。
下载azcopy 其简单的可执行文件,可以在提取后直接运行
为您的虚拟机创建一个托管标识(系统分配的标识)。导航到 VM-> 身份 -> 将状态设置为“开启”-> 保存
现在可以为虚拟机分配以下级别的权限:
对于这种情况,导航到存储帐户 -> IAM -> 添加角色分配 -> 选择角色“存储 Blob 数据参与者” -> 分配对“虚拟机”的访问权限 -> 选择所需的 VM -> 保存
注意:如果您在资源组的 IAM 属性上授予对 VM 的访问权限,则 VM 将能够访问 RG 的所有存储帐户。
登录到 VM 并使用身份(从 azcopy 所在的同一位置运行命令) 对于 Windows:azcopy login --identity 对于 linux:./azcopy login --identity
现在上传或下载文件: 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
【讨论】: