如何将源存储账户的所有容器复制为目标存储账户容器内的文件夹?
在Azure Data Factory中实现批量将源存储Blob容器复制为目标容器的子文件夹
整体流程概述
利用ADF的Get Metadata活动获取源存储账户的所有容器列表,通过Foreach活动遍历每个容器,再用Copy活动将每个源容器的内容复制到目标存储账户指定容器下的对应名称文件夹中。
具体配置步骤
1. 配置Get Metadata活动获取源容器列表
- 创建源Azure Blob存储数据集,不要指定具体容器(留空即可)。
- 添加Get Metadata活动,数据源选择上述数据集,在“字段”选项中勾选Child Items,执行后即可获取源存储账户下所有容器的名称列表。
2. 添加Foreach活动遍历容器
- 将Foreach活动的“项”设置为
@activity('Get Metadata活动名称').output.childItems(替换为你的Get Metadata活动实际名称)。 - 根据容器数量调整并行度(默认是20,可按需修改)。
3. 在Foreach内部配置Copy活动
源端配置
- 源数据集选择Azure Blob存储,动态指定容器名称:在数据集的“容器”字段中输入
@item().name,表示当前遍历到的源容器。 - 路径选择“整个容器”,确保复制该容器下所有层级的Blob数据。
目标端配置
- 目标数据集选择Azure Blob存储,先指定固定的目标容器(比如命名为
target-container)。 - 动态设置文件夹路径:在数据集的“文件夹路径”字段中输入
@item().name,这样源容器的内容会被复制到目标容器下以源容器命名的子文件夹中。
示意图

注意事项
- 确保ADF拥有源存储账户的读取权限、目标存储账户的写入权限,可通过托管标识(Managed Identity)或SAS密钥配置。
- 若存在大量容器,建议先小范围测试验证逻辑,再全量执行。
- 若需过滤特定容器,可在Get Metadata之后添加Filter活动,筛选出需要复制的容器列表再传入Foreach。
内容的提问来源于stack exchange,提问作者Vaishnavi Vaishu
相关产品推荐
相关产品推荐

