WinBoss
WinBoss

Reputation: 923

Azure Backup. Wait Only Until Snapshot Is Taken, Not Until It's Transferred to Vault

I'm writing a PowerShell script for starting MySQL Server process, initiating backups from Azure Recovery Services, then starting MySQL Server process again.

For my purposes Wait-AzRecoveryServicesBackupJob cmdlet is not suitable, as Azure Backup always takes 10 minutes to take a snapshot and takes 3-24 hours to transfer that snapshot to Vault. How can I wait only until snapshot is taken? enter image description here

Upvotes: 1

Views: 1103

Answers (1)

PerfectlyPanda
PerfectlyPanda

Reputation: 3501

You will need to set up your own polling loop, but unfortunately the Get-AzRecoveryServicesBackupJob doesn't have the properties you need. There are two options available to you in Powershell-- the REST API or the CLI.

Once you've gotten the job info, you can find the individual tasks under properties.extendedInfo.tasksList

Implementing this under the CLI would look something like this:

$resourceGroup = "resourceGroup"
$vaultName = "vaultName"

$jobs = az backup job list --resource-group $resourceGroup --vault-name $vaultName --start-date 28-8-2020 | convertfrom-json
$jobName = $jobs[0].name

$jobStatus = az backup job show --name $jobName --resource-group $resourceGroup --vault-name $vaultName
$taskStatus = $jobStatus.properties.extendedInfo.tasksList | Where-Object { $_.taskId -eq "Take Snapshot"}
While ( $taskStatus.status -ne Completed ) {
     Write-Host -Object "Waiting for completion..."
     Start-Sleep -minutes 1
     $jobStatus = az backup job show --name $jobName --resource-group $resourceGroup --vault-name $vaultName
     $taskStatus = $jobStatus.properties.extendedInfo.tasksList | Where-Object { $_.taskId -eq "Take Snapshot"}
}
Write-Host -Object "Done!"

Upvotes: 1

Related Questions