接上篇,我們可以創建、刪除快照了,作爲備份措施,我們還希望能恢復指定的快照,進而從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