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

如何快速跨存储账户迁移指定格式的Blob容器JSON文件

高效迁移符合条件的Azure Blob文件方案

针对跨存储账户迁移命名为yyyymmdd-hhmmss.json、早于2022年1月1日的嵌套Blob文件需求,以下是几种高效的一次性实现方案:

1. AzCopy(推荐,高效批量传输)

AzCopy是Azure官方的批量存储传输工具,支持多线程、断点续传,最适合大规模文件迁移场景。

核心逻辑

利用文件名前缀(yyyymmdd)或Blob创建时间筛选目标文件,递归遍历嵌套文件夹完成迁移。

命令示例

基于文件名筛选(文件名与创建时间一致时优先用)

azcopy copy "https://<源存储账户>.blob.core.windows.net/<源容器>?<源SAS令牌>" "https://<目标存储账户>.blob.core.windows.net/<目标容器>?<目标SAS令牌>" \
  --include-pattern "200[0-9]*.json;201[0-9]*.json;2020*.json;2021*.json" \
  --recursive \
  --parallel-threads=64
  • --include-pattern:匹配所有2000-2021年开头的JSON文件(即早于20220101)
  • --recursive:遍历所有嵌套文件夹
  • --parallel-threads:手动调高线程数提升传输速度(默认自动适配)

基于Blob创建时间筛选(文件名与创建时间不一致时用)

azcopy copy "https://<源存储账户>.blob.core.windows.net/<源容器>?<源SAS令牌>" "https://<目标存储账户>.blob.core.windows.net/<目标容器>?<目标SAS令牌>" \
  --include-before "2022-01-01T00:00:00Z" \
  --recursive \
  --log-level=INFO
  • --include-before:筛选所有UTC时间2022年1月1日0点前创建的Blob
  • --log-level=INFO:生成详细日志,方便排查迁移异常

优化点

  • 若迁移中断,重新运行命令会自动续传已完成的文件
  • 优先使用SAS令牌而非账户密钥,降低权限风险

2. Azure PowerShell脚本(适合复杂筛选逻辑)

如果需要更灵活的筛选规则(比如同时校验文件名格式和创建时间),可以用PowerShell脚本实现。

步骤与代码

  1. 安装并导入Az.Storage模块:
Install-Module -Name Az.Storage -Force -AllowClobber
Import-Module Az.Storage
  1. 登录Azure并获取存储上下文:
Connect-AzAccount
$sourceContext = (Get-AzStorageAccount -ResourceGroupName <源资源组> -Name <源存储账户>).Context
$targetContext = (Get-AzStorageAccount -ResourceGroupName <目标资源组> -Name <目标存储账户>).Context
  1. 筛选并迁移符合条件的Blob:
$cutoffDate = Get-Date "2022-01-01"
# 遍历所有Blob,筛选文件名格式正确且日期早于截止日期的文件
Get-AzStorageBlob -Container <源容器> -Context $sourceContext -Recurse |
  Where-Object {
    $_.Name -match '^\d{8}-\d{6}\.json$' -and
    ([datetime]::ParseExact($_.Name.Substring(0,8), 'yyyyMMdd', $null) -lt $cutoffDate)
  } |
  ForEach-Object {
    # 异步复制(适合大批量),若需同步复制改用Copy-AzStorageBlob
    Start-AzStorageBlobCopy -SrcBlob $_.Name -SrcContainer <源容器> `
      -DestContainer <目标容器> -Context $sourceContext -DestContext $targetContext
  }

优化点

  • PowerShell 7+版本可添加-Parallel参数实现并行复制,大幅提升效率
  • 可添加进度条或日志输出,实时监控迁移状态

3. Azure Logic Apps(无代码方案)

若不想编写代码,可通过Logic Apps实现无代码迁移,适合中小规模文件场景。

操作步骤

  1. 创建一个空白Logic App,选择Recurrence触发器,设置为一次性执行(比如立即运行一次)
  2. 添加List blobs操作,选择源存储账户和容器,开启递归选项
  3. 添加Filter array操作,设置筛选条件:
    • 条件1:Blob文件名匹配正则表达式 ^\d{8}-\d{6}\.json$
    • 条件2:提取文件名前8位转换为日期后,小于2022-01-01(或直接用Blob创建时间筛选)
  4. 对筛选后的每个Blob,添加Copy blob操作,选择目标存储账户和容器
  5. 保存并运行Logic App,完成迁移

注意事项

  • 大规模文件迁移时,需调整Logic App的并发限制(默认并发数有限)
  • 可添加错误处理步骤,捕获迁移失败的文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:45:33