删除老的Azure Blob Snapshot
2016-01-24 23:27
281 查看
客户有这样的需求:每天需要对VM的数据进行备份,但如果备份的时间超过一定的天数,需要进行清除。
本文也是在前一篇Azure Blob Snapshot上的优化。
"Azure blob Storage Snapshot"里,删除Snapshot的思路是遍历所有Storage Account,找到所有的vhd文件,看看是否有Snapshot,如果有判断是否超过14天,如果超过则删除,如果没有超过,则保留。
本文的思路是:
获取所有的虚拟机,判断虚拟机是否运行,如果运行,获取这台虚拟机上所有的硬盘。
如果硬盘的Snapshot超过我们给定的时间,删除,否则不做操作。
具体的脚本如下:
本文也是在前一篇Azure Blob Snapshot上的优化。
"Azure blob Storage Snapshot"里,删除Snapshot的思路是遍历所有Storage Account,找到所有的vhd文件,看看是否有Snapshot,如果有判断是否超过14天,如果超过则删除,如果没有超过,则保留。
本文的思路是:
获取所有的虚拟机,判断虚拟机是否运行,如果运行,获取这台虚拟机上所有的硬盘。
如果硬盘的Snapshot超过我们给定的时间,删除,否则不做操作。
具体的脚本如下:
function DeleteOlderSnapshot { [CmdletBinding()] param ( [Parameter (Mandatory=$True, ValueFromPipeLine=$True, HelpMessage="BeforeTheDayWillBeDelete")] [String] $Day, [switch] $LogErrors ) BEGIN{ Write-Verbose "Error Log will Be $ErrorLog" } Process { $vms = Get-AzureVM $now = Get-Date foreach ($vm in $vms) { if($vm.Status -eq "ReadyRole") { $osblobname = ($vm.VM.OSVirtualHardDisk).MediaLink.ToString().Split("/")[-1] $osblobcontainer = ($vm.VM.OSVirtualHardDisk).MediaLink.ToString().Split("/")[-2] $osblobsa = ($vm.VM.OSVirtualHardDisk).MediaLink.ToString().Split("/")[-3].Split(".")[0] $storagekey = (Get-AzureStorageKey -StorageAccountName $osblobsa).Primary $ctr = New-AzureStorageContext -StorageAccountName $osblobsa -StorageAccountKey $storagekey -Environment AzureChinaCloud $blobs = Get-AzureStorageBlob -Container $osblobcontainer -Context $ctr | Where-Object {$_.Name -match $osblobname} foreach ($blob in $blobs) { if($blob.ICloudBlob.IsSnapshot) { $diff = [datetime]::FromBinary($now.Ticks-$blob.SnapshotTime.Ticks) write-host $blob.name "is a snapshot" "snapshot time is" $diff.DayOfYear "days" if ( $diff.dayofyear -ge $Day) { write-host "delete" $blob.ICloudBlob.Delete() } }else{ write-host $blob.Name "is original disk" } } $count = $vm.VM.DataVirtualHardDisks.Count for($i=0;$i -lt $count;$i++) { $datablobname = ($vm.VM.DataVirtualHardDisks)[$i].MediaLink.ToString().Split("/")[-1] $datablobcontainer = ($vm.VM.DataVirtualHardDisks)[$i].MediaLink.ToString().Split("/")[-2] $datablobsa = ($vm.VM.DataVirtualHardDisks)[$i].MediaLink.ToString().Split("/")[-3].Split(".")[0] $storagekey = (Get-AzureStorageKey -StorageAccountName $datablobsa).Primary $ctr = New-AzureStorageContext -StorageAccountName $datablobsa -StorageAccountKey $storagekey -Environment AzureChinaCloud $blobs = Get-AzureStorageBlob -Container $datablobcontainer -Context $ctr | Where-Object {$_.Name -match $datablobname} foreach ($blob in $blobs) { if($blob.ICloudBlob.IsSnapshot) { $diff = [datetime]::FromBinary($now.Ticks-$blob.SnapshotTime.Ticks) write-host $blob.name "is a snapshot" "snapshot time is" $diff.DayOfYear "days" if ( $diff.dayofyear -ge $Day) { write-host "delete" $blob.ICloudBlob.Delete() } }else{ write-host $blob.Name "is original disk" } } } } } } end {} } DeleteOlderSnapshot -Day 2
相关文章推荐
- kuangbin_SegTree B (HDU 1754)
- TCP恋爱史:三次握手和四次分手
- 电子拍卖系统开发第五天
- ”抓取“
- ①《计算机科学导论》之绪论
- Shark机器学习库
- Java 入门 之 数据的输出与选择语句
- LAMP(Linux+Apache+MySQL+PHP)安装
- django的settings中几个static设置项的关系
- springMVC框架下——通用接口之图片上传接口
- OC加强day2-自动释放池、指针分类、ARC、分类、延展、block
- Servelt生命周期
- mfc中将接收到的十六进制数保存到TXT文件,保存形式为十进制
- 网上图书商城项目学习笔记-003系统功能模块分析
- 关于sql注入
- iocp还是select
- pygame 写的 flappy bird
- Android 中的 ContentProvider
- JAXB Hello World
- 升级centos的Python至3.5.1