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

使用AzCopy在两个Azure Data Lake Storage Gen2存储账户间复制目录内容时遇到InvalidResourceName错误的求助

使用AzCopy在两个Azure Data Lake Storage Gen2存储账户间复制目录内容时遇到InvalidResourceName错误的求助

你好,我看到你尝试用AzCopy在两个Azure Data Lake Storage Gen2(ADLS Gen2)存储账户之间复制Parquet文件,但遇到了InvalidResourceName错误,同时还有空目录无法处理的提示,我来帮你一步步排查解决这些问题。

先说说核心问题:你当前使用的是Blob存储的端点(blob.core.windows.net),虽然ADLS Gen2兼容Blob API,但它的核心特性是分层命名空间,Blob端点并不能完美适配这个特性,这就是你遇到目录处理问题和资源名称错误的主要原因。下面是具体的解决步骤:

1. 切换到ADLS Gen2专用的DFS端点

ADLS Gen2有专门针对分层命名空间优化的端点:dfs.core.windows.net,用这个端点替换命令里的blob.core.windows.net,能彻底解决目录支持的问题,也能避免大部分资源名称兼容性错误。修改后的命令如下:

AzCopy copy "https://storageaccount1.dfs.core.windows.net/raw/2023/02/10/*" "https://storageaccount2.dfs.core.windows.net/test" --recursive=true

这里加上--recursive=true是为了确保复制所有子目录和文件(哪怕你的源目录没有子文件夹,这个参数也不会有负面影响)。

2. 排查资源名称中的非法字符

错误提示明确指出The specified resource name contains invalid characters,你需要检查源和目标路径里的容器(ADLS Gen2里叫文件系统)、目录或文件名是否包含Azure存储禁止的字符:

  • 文件系统(原Blob容器)名称只能用小写字母、数字和短横线(-),且不能以短横线开头/结尾
  • 目录和文件名不能包含\ / : * ? " < > |这些字符,空格或特殊符号也可能触发错误

如果发现有非法字符,要么先修改资源名称,要么在PowerShell里用反引号(`)对特殊字符进行转义。

3. 确保目标文件系统/目录已存在

AzCopy默认不会自动创建目标文件系统(也就是Blob里的容器),如果目标端的test文件系统还没创建,你需要先手动创建:
用Azure CLI创建的话,执行这条命令:

az storage fs create -n test --account-name storageaccount2 --auth-mode login

或者用AzCopy直接创建目标路径:

AzCopy make "https://storageaccount2.dfs.core.windows.net/test"

4. 解决空目录的提示问题

你看到的Any empty folders will not be processed提示,本质上也是因为用了Blob端点导致的分层命名空间支持不足,切换到DFS端点后,这个提示就会消失,因为DFS端点原生支持ADLS Gen2的目录结构。

如果修改后还是有问题,可以加上--verbose参数获取更详细的日志,方便进一步排查:

AzCopy copy "https://storageaccount1.dfs.core.windows.net/raw/2023/02/10/*" "https://storageaccount2.dfs.core.windows.net/test" --recursive=true --verbose

备注:内容来源于stack exchange,提问作者justsander

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 14:02:42