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

使用本地服务器与AzCopy跨ADLS存储账户传输文件报错如何处理

报错产生原因
  • 核心原因是执行的AzCopy命令仅为源ADLS Gen2存储容器配置了SAS授权凭证,未给目标存储容器提供合法的写入授权,AzCopy没有权限将数据写入目标存储账户。
  • 额外可能的触发原因:
    • 提供的SAS令牌权限不足:源端SAS缺少读取/列表权限,或目标端SAS缺少写入/列表权限
    • SAS令牌已过期,或允许访问的IP范围未覆盖当前运行AzCopy的服务器公网IP
    • 存储账户的防火墙规则拦截了当前服务器的访问请求
解决方案

方案1:使用SAS令牌授权(适合一次性临时传输场景)

  1. 分别为源、目标ADLS Gen2容器生成合法SAS令牌:
    • 源端SAS勾选读取、列出权限
    • 目标端SAS勾选写入、列出权限(如果需要覆盖目标端已有同名文件,额外勾选删除权限)
    • 配置SAS有效期覆盖整个传输周期,允许的IP范围添加当前运行AzCopy的服务器公网IP
  2. 调整执行命令,给目标端URL也拼接上生成的SAS令牌:
azcopy cp 'https://mysourceaccount.dfs.core.windows.net/mycontainer?<源端SAS字符串>' 'https://mydestinationaccount.dfs.core.windows.net/mycontainer?<目标端SAS字符串>' --recursive

方案2:使用Azure AD身份授权(适合长期、高频传输场景)

  1. 首先在运行AzCopy的服务器上执行身份登录:
# 单租户场景直接执行
azcopy login
# 跨租户场景需要指定租户ID
azcopy login --tenant-id <对应Azure租户ID>
  1. 为登录使用的Azure AD账号分配对应权限:
    • 源存储账户范围分配存储Blob数据读者角色
    • 目标存储账户范围分配存储Blob数据参与者角色
  2. 直接执行不带SAS令牌的传输命令即可:
azcopy cp 'https://mysourceaccount.dfs.core.windows.net/mycontainer' 'https://mydestinationaccount.dfs.core.windows.net/mycontainer' --recursive

额外验证步骤

如果配置后仍报错,可依次排查:

  • 确认两个存储账户的防火墙规则已放通当前服务器的公网IP,或已开启「允许受信任的Azure服务访问该存储账户」配置
  • 确认SAS令牌未被意外转义,在命令行中如果用双引号包裹URL注意不要让Shell解析SAS中的特殊字符(建议优先用单引号包裹URL)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:24:03