如何将文件从 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.
的复杂性
下载azcopy
其简单的可执行文件,提取后可以直接运行
为您的虚拟机创建托管身份(系统分配的身份)。导航到 VM-> Identity -> 将 Status 设置为 'ON' -> Save
现在可以在以下级别为 VM 分配权限:
- 存储帐户
- 容器(文件系统)
- 资源组
- 订阅
对于这种情况,导航到存储帐户 -> IAM -> 添加角色分配 -> Select 角色 'Storage Blob Data Contributor' -> 分配对 'Virtual machine' 的访问权限 -> Select 所需的虚拟机 -> 保存
注意:如果您在资源组的 IAM 属性上授予对 VM 的访问权限,则该 VM 将能够访问 RG 的所有存储帐户。
登录到 VM 并假定身份(运行 来自 azcopy 所在相同位置的命令)
对于 windows:azcopy login --identity
对于 linux:./azcopy login --identity
立即上传或下载文件:
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
我的 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.
的复杂性下载azcopy 其简单的可执行文件,提取后可以直接运行
为您的虚拟机创建托管身份(系统分配的身份)。导航到 VM-> Identity -> 将 Status 设置为 'ON' -> Save
现在可以在以下级别为 VM 分配权限:
- 存储帐户
- 容器(文件系统)
- 资源组
- 订阅
对于这种情况,导航到存储帐户 -> IAM -> 添加角色分配 -> Select 角色 'Storage Blob Data Contributor' -> 分配对 'Virtual machine' 的访问权限 -> Select 所需的虚拟机 -> 保存
注意:如果您在资源组的 IAM 属性上授予对 VM 的访问权限,则该 VM 将能够访问 RG 的所有存储帐户。
登录到 VM 并假定身份(运行 来自 azcopy 所在相同位置的命令) 对于 windows:azcopy login --identity 对于 linux:./azcopy login --identity
立即上传或下载文件: 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