同一Azure租户跨订阅存储账户文件共享数据复制问题求助
解决跨订阅Azure文件共享复制问题
一、AzCopy命令报错修复
你遇到的from-to argument required错误是因为AzCopy无法自动识别源和目标均为Azure文件共享,需显式指定类型参数。
修正后的命令
在原命令中添加--from-to=FileFile参数即可:
azcopy copy 'https://stacc1uat.file.core.windows.net/fileshare1uat/*?sv=2022-11-02&ss=f&srt=sco&sp=rwdlc&se=2024-04-18T07:48:11Z&st=2024-04-17T23:48:11Z&spr=https&sig=Afcze2DZGJ5fSR2KZF5uoTLK%2Fn%2BQRP9YGxDgoFK44Jc%3D' 'https://stacc1stg.file.core.windows.net/fileshare1stg/?sv=2022-11-02&ss=f&srt=sco&sp=rwlc&se=2024-04-18T07:50:41Z&st=2024-04-17T23:50:41Z&spr=https&sig=egUK64ONwPxKrU026tSxgubAtzdYiD75MW8pIDZrlZc%3D' --recursive=true --from-to=FileFile
批量处理两个文件共享的脚本示例
若要一次性处理两对文件共享,可使用PowerShell循环执行:
$sharePrefixes = @("Fileshare1", "Fileshare2") foreach ($prefix in $sharePrefixes) { $sourceShare = "$prefix`uat" $targetShare = "$prefix`stg" $sourceUrl = "https://stacc1uat.file.core.windows.net/$sourceShare/*?sv=2022-11-02&ss=f&srt=sco&sp=rwdlc&se=2024-04-18T07:48:11Z&st=2024-04-17T23:48:11Z&spr=https&sig=Afcze2DZGJ5fSR2KZF5uoTLK%2Fn%2BQRP9YGxDgoFK44Jc%3D" $targetUrl = "https://stacc1stg.file.core.windows.net/$targetShare/?sv=2022-11-02&ss=f&srt=sco&sp=rwlc&se=2024-04-18T07:50:41Z&st=2024-04-17T23:50:41Z&spr=https&sig=egUK64ONwPxKrU026tSxgubAtzdYiD75MW8pIDZrlZc%3D" azcopy copy $sourceUrl $targetUrl --recursive=true --from-to=FileFile }
二、ADF实现跨订阅多文件共享定向复制
步骤1:创建存储账户链接服务
- 打开ADF Studio,进入管理 > 链接服务,点击新建
- 选择Azure文件存储,分别创建源(stacc1uat)和目标(stacc1stg)的链接服务:
- 跨订阅场景推荐使用托管标识验证:在目标存储账户的IAM中,给ADF托管标识分配存储文件数据参与者权限
- 填写存储账户名称,选择对应订阅和资源组,完成创建
步骤2:创建动态文件共享数据集
- 进入创作 > 数据集,新建Azure文件存储数据集
- 源数据集:关联源链接服务,将文件共享名称设置为参数(如
@dataset().ShareName),文件路径设为*以包含所有子目录和文件 - 目标数据集:关联目标链接服务,同样将文件共享名称设为参数,路径设为
*
步骤3:批量复制管道配置
- 新建管道,添加ForEach活动,设置项为JSON数组:
["Fileshare1uat", "Fileshare2uat"] - 在ForEach内部添加复制活动:
- 源选项卡:选择源数据集,设置参数
ShareName为@item(),开启递归 - 目标选项卡:选择目标数据集,设置参数
ShareName为@replace(item(), 'uat', 'stg'),复制行为选保留层级
- 源选项卡:选择源数据集,设置参数
- 执行管道,即可自动完成两对文件共享的定向复制
内容的提问来源于stack exchange,提问作者Vaishnavi Vaishu
相关产品推荐
相关产品推荐

