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

求Azure PowerShell脚本:对比Blob与本地文件并下载缺失文件

Azure Blob存储本地缺失文件下载脚本

以下是实现对比Azure Blob存储与本地文件、仅下载本地缺失文件的完整PowerShell脚本:

# 配置核心参数
$storageAccountName = "你的存储账户名"
$containerName = "你的容器名"
$localDestinationPath = "D:\LocalBlobFiles"
$isRecursive = $true # 设为$false则不处理Blob容器中的子目录

# 获取存储账户上下文
$storageAccount = Get-AzStorageAccount -Name $storageAccountName
$context = $storageAccount.Context

# 获取容器内所有Blob(含子目录,根据$isRecursive控制)
$blobs = Get-AzStorageBlob -Container $containerName -Context $context -Recursive:$isRecursive

# 转换本地文件路径为Blob名称格式(统一用正斜杠分隔层级)
$localFiles = Get-ChildItem -Path $localDestinationPath -File -Recurse:$isRecursive | ForEach-Object {
    $_.FullName.Substring($localDestinationPath.Length).Replace('\', '/').TrimStart('/')
}

# 遍历Blob,下载本地缺失的文件
foreach ($blob in $blobs) {
    $localFilePath = Join-Path -Path $localDestinationPath -ChildPath $blob.Name.Replace('/', '\')
    
    if (-not (Test-Path -Path $localFilePath)) {
        # 自动创建文件所在目录(避免因目录不存在下载失败)
        $directory = Split-Path -Path $localFilePath -Parent
        if (-not (Test-Path -Path $directory)) {
            New-Item -Path $directory -ItemType Directory -Force | Out-Null
        }
        
        Write-Host "正在下载缺失文件: $($blob.Name)"
        Get-AzStorageBlobContent -Blob $blob.Name -Container $containerName -Destination $localFilePath -Context $context -Force
    } else {
        Write-Host "文件已存在,跳过: $($blob.Name)"
    }
}

Write-Host "缺失文件下载完成"

关键说明

  • 参数适配:替换$storageAccountName、$containerName和$localDestinationPath为你的实际信息,$isRecursive控制是否同步Blob的子目录结构。
  • 路径格式统一:将本地文件路径转换为Blob的正斜杠层级格式,避免因Windows与Azure的路径分隔符差异导致对比错误。
  • 目录自动创建:下载前检查并创建文件所在目录,解决层级Blob下载时的目录缺失问题。
  • 按需下载:仅当本地无对应文件时执行下载,避免重复操作。

对你原代码的修正点

  1. 补充了Blob列表的正确获取逻辑,而非依赖未指定路径的Get-Content;
  2. 增加了本地文件与Blob的对比逻辑,避免盲目下载;
  3. 修正了Get-AzStorageBlobContent中-Verbos的拼写错误(正确为-Verbose,脚本中按需启用);
  4. 添加了目录自动创建逻辑,解决层级结构下的下载失败问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:26:05