问题描述
我有一个包含大量文件(数百万)的 Azure blob 容器。我需要找出是否有文件大小为 0 字节的文件。有没有简单的方法?
以防万一,容器没有应用任何标签。
解决方法
以防万一这可能对其他人有所帮助,这是我在 powershell 中编写的脚本:
$ctx = New-AzStorageContext -StorageAccountName <AccountName> -StorageAccountKey <PrimaryKey>
$ContainerName = "containerName"
$MaxReturn = 10000
$loopCount = 0
$Total = 0
$Token = $Null
do {
$Blobs = Get-AzStorageBlob -Context $ctx -Container $ContainerName -MaxCount $MaxReturn -ContinuationToken $Token
$Total += $Blobs.Count
foreach ($blobitem in $Blobs) {
$loopCount += 1
Write-Host -NoNewline "`rValidating batch: " $loopCount "/" $blobsList.Length " (Current total:" $Total ")"
if ($blobitem.Length -eq 0) {
Write-Host ""
Write-Host "Zero bytes file found: " $blobitem.Name
}
}
$loopCount = 0
if ($Blobs.Length -le 0) { Break; }
$Token = $Blobs[$blobs.Count - 1].ContinuationToken;
}
While ($Token -ne $Null)
Write-Host ""
Write-Host "Finished!"