You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Blob Storage文件传输至自建VM?哪种方式更优?

嗨,我来帮你搞定把Azure Blob Storage里的文件传到自己VM的事儿,顺便把你纠结的术语和方式差异说清楚~

一、先澄清个术语误区

你提到的“从Blob上传至VM”其实是表述上的混淆:站在VM的角度,把Blob里的文件拿到VM本地,本质是下载操作;而把VM里的文件放到Blob里,才叫上传。你需要的是把Blob文件转移到VM,所以核心操作就是“从Blob下载至VM”,下面的方法都是针对这个场景的。

二、具体操作方法

我给你列几种最常用、靠谱的方式,你可以根据自己的需求选:

1. 使用AzCopy(最推荐,高效稳定)

AzCopy是专门用于Azure存储数据传输的工具,支持断点续传、批量处理,速度拉满,适合大文件或批量操作:

  • 先在你的VM上安装AzCopy:
    • Linux VM:执行以下命令
      wget https://aka.ms/downloadazcopy-v10-linux && tar -xvf downloadazcopy-v10-linux && sudo cp ./azcopy_linux_amd64_*/azcopy /usr/bin/
      
    • Windows VM:可以直接下载安装包,或者用PowerShell快速安装
      Invoke-WebRequest -Uri https://aka.ms/downloadazcopy-v10-windows -OutFile AzCopy.zip; Expand-Archive AzCopy.zip -DestinationPath C:\AzCopy -Force
      
  • 获取Blob容器的SAS令牌:在Azure Portal里找到你的存储账户→Blob容器→生成SAS,权限选「读取」,设置好有效期,复制生成的SAS链接。
  • 执行下载命令:
    • 下载单个文件:
      azcopy copy "https://<存储账户名>.blob.core.windows.net/<容器名>/<文件路径>?<SAS令牌>" "/VM本地目标路径/文件名"
      
    • 下载整个容器(递归所有文件):
      azcopy copy "https://<存储账户名>.blob.core.windows.net/<容器名>?<SAS令牌>" "/VM本地目标文件夹" --recursive
      

2. 使用Azure CLI(适合自动化脚本)

如果需要把传输操作集成到自动化工作流里,用Azure CLI会更方便:

  • 先在VM上安装Azure CLI,然后登录(可以用交互式登录或服务主体,适合无人值守):
    az login
    
  • 下载单个文件:
    az storage blob download --account-name <存储账户名> --container-name <容器名> --name <Blob文件名> --file /VM本地目标路径/文件名
    
  • 批量下载整个容器的文件:
    az storage blob download-batch --account-name <存储账户名> --destination /VM本地目标文件夹 --source <容器名> --pattern "*"
    

3. 挂载Blob容器为VM本地磁盘(适合频繁访问)

如果需要频繁访问Blob里的文件,不想每次都下载到VM本地占空间,可以直接把Blob容器挂载成VM的本地磁盘:

  • Linux VM:用BlobFUSE工具,步骤大概是:
    1. 安装BlobFUSE依赖包
    2. 创建配置文件,填入存储账户名和SAS令牌/账户密钥
    3. 执行挂载命令:
      blobfuse /mnt/blobcontainer --container-name <容器名> --config-file ./blobfuse.cfg
      
  • Windows VM:可以用Azure Storage Explorer可视化挂载,或者用PowerShell映射网络驱动器:
    New-PSDrive -Name Z -PSProvider FileSystem -Root "\\<存储账户名>.blob.core.windows.net/<容器名>" -Credential (Get-Credential -UserName "Azure\<存储账户名>" -Message "输入存储账户密钥")
    
三、关于方式选择的补充

回到你最初的疑问:其实“从Blob上传至VM”是错误的表述,你需要的就是“从Blob下载至VM”。如果是问不同下载方式的优劣:

  • 追求速度、批量处理大文件:选AzCopy,性能最优还支持断点续传
  • 需要集成到自动化脚本/工作流:选Azure CLI,命令式操作便于脚本化
  • 频繁访问Blob文件、不想占用VM本地存储:选挂载Blob容器,像用本地磁盘一样直接访问Blob内容

内容的提问来源于stack exchange,提问作者user204760

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:01:11