从Blob存储中删除SQL备份

时间:2019-02-01 19:46:01

标签: powershell azure-storage

我正在创建一个从Azure blob存储中删除SQL备份文件的过程。

通过我的研究,似乎可靠地执行删除X天之前的备份的唯一方法是将文件名读取为文本文件,然后创建第二个文件,并根据其中包含的字符串日期过滤结果文件名。

此任务涉及两种日期格式:yyyy_MMdd和yyyyMMdd。

我需要找到120到365天之间的所有文件。有超过50,000个文件要处理,约有500个不同的日期字符串要搜索。

我知道我现在已经可以,因为它需要的永久的运行改善(再加上它的RBAR)。如何更有效地处理所有文件?

Get-AzureStorageBlob -Context $context -Container "ContainerName" | SELECT name | Out-File -filepath C:\Users\name\Desktop\Deletions.txt

$Arr1 = @()
$Arr2 = @()
$collection = @()

ForEach($number in 120..365)
{
 $Arr1  += (Get-Date).addDays(-$number).ToString("yyyy_MMdd")
 $Arr2  += (Get-Date).addDays(-$number).ToString("yyyyMMdd")
}

$collection += $Arr1
$collection += $Arr2

ForEach ($date in $collection)
{
Get-Content -Path C:\Users\name\Desktop\Deletions.txt | Where-Object { $_ -like "*$date*" } | Out-File -filepath C:\Users\name\Desktop\DeleteThese.txt -Append
}

1 个答案:

答案 0 :(得分:1)

使用ArrayLists代替数组应该可以使您受益匪浅。可以创建的ArrayList对象如下:for vehicle in VehicleDiff.intersection(): print('vehicle:{}'.format(vehicle))

intersection:[2125945310]
vehicle:color:red, brand:fiat

希望有帮助!