接上篇,我们可以创建、删除快照了,作为备份措施,我们还希望能恢复指定的快照,进而从VHD再将虚拟机创建出来。
本篇文章我们来使用脚本快速恢复N天前的最后一个快照到同存储账号下。
下面是脚本运行截图:
运行脚本时需要注意:
1. 我们需要在提示处输入原VHD文件的完整路径
2. 脚本中可以定义恢复几天前的快照
3. 要恢复到的Container必须已存在
4. 恢复的VHD文件名为:默认前缀加原文件名
好了,下面开始上干货!PowerShell内容如下:
#------------------------------------------------------------------------------
# User own the risk, otherwise exit.
#
# Azure PowerShell Version: 3.6.0
#
# Create by Zeno.
#------------------------------------------------------------------------------
#登录订阅
#Login-AzureRmAccount -EnvironmentName AzureChinaCloud -Credential $(Get-Credential -UserName [email protected] -Message Login_AzureChinaCloud) |Out-Null
#定义恢复多少天前的快照
$resdays = "10"
#定义要恢复的blob路径
$blobURi = Read-Host -prompt "`n`tPlease input the VHD URi"
$destcontainer = "upload"
$srccontainer = $blobURi.Split("/")[-2]
$blobname = $blobURi.Split("/")[-1]
$destblob = "R" + $(Get-Date).DayOfYear + "-" + $blobname
$storage = Get-AzureRmStorageAccount | Where-Object {$_.StorageAccountName -eq $blobURi.Split("/")[2].Split(".")[0] }
$srccontainer = Get-AzureStorageContainer -Context $storage.Context -Name $blobURi.Split("/")[-2]
$diff = (Get-Date).DayOfYear - $resdays
$snaps = Get-AzureStorageBlob -Context $storage.Context -Container $srccontainer.Name | Where-Object {$_.Name -eq $blobname -and $_.SnapshotTime.DayofYear -eq $diff}
#恢复当天最后一个快照
Start-AzureStorageBlobCopy -Context $storage.Context -CloudBlob $snaps.ICloudBlob[-1] -DestContainer $destcontainer -DestBlob $destblob