Share via


Fazer uma cópia de segurança dos Discos Geridos do Azure com a CLI do Azure

Este artigo descreve como fazer uma cópia de segurança do Azure Managed Disk com a CLI do Azure.

Importante

O suporte para cópia de segurança e restauro dos Discos Geridos do Azure através da CLI está em pré-visualização e disponível como uma extensão na versão do Az 2.15.0 e posterior. A extensão é instalada automaticamente quando executa os comandos az dataprotection . Saiba mais sobre extensões.

Neste artigo, vai aprender a:

  • Criar um cofre de Cópias de Segurança

  • Criar uma política de Cópia de Segurança

  • Configurar a Cópia de Segurança de um Disco do Azure

  • Executar uma tarefa de cópia de segurança a pedido

Para obter informações sobre a disponibilidade da região de cópia de segurança do Azure Disk, cenários e limitações suportados, veja a matriz de suporte.

Criar um cofre de Cópias de Segurança

O cofre de cópias de segurança é uma entidade de armazenamento no Azure que armazena dados de cópia de segurança para várias cargas de trabalho mais recentes suportadas pelo Azure Backup, como servidores da Base de Dados do Azure para PostgreSQL, blobs numa conta de armazenamento e Discos do Azure. Os cofres de cópias de segurança facilitam a organização dos dados de cópia de segurança, ao mesmo tempo que minimizam a sobrecarga de gestão. Os cofres de cópias de segurança baseiam-se no modelo do Azure Resource Manager do Azure, que fornece capacidades melhoradas para ajudar a proteger os dados de cópia de segurança.

Antes de criar um cofre de Cópia de Segurança, selecione a redundância de armazenamento dos dados no cofre. Em seguida, continue para criar o cofre de cópias de segurança com essa redundância de armazenamento e a localização. Neste artigo, vamos criar um Cofre de cópias de segurança TestBkpVault, na região westus, no teste do grupo de recursosBkpVaultRG. Utilize o comando az dataprotection vault create para criar um cofre de Cópia de Segurança. Saiba mais sobre como criar um cofre de Cópia de Segurança.

az dataprotection backup-vault create -g testBkpVaultRG --vault-name TestBkpVault -l westus --type SystemAssigned --storage-settings datastore-type="VaultStore" type="LocallyRedundant"
{
  "eTag": null,
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault",
  "identity": {
    "principalId": "2ca1d5f7-38b3-4b61-aa45-8147d7e0edbc",
    "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "type": "SystemAssigned"
  },
  "location": "westus",
  "name": "TestBkpVault",
  "properties": {
    "provisioningState": "Succeeded",
    "storageSettings": [
      {
        "datastoreType": "VaultStore",
        "type": "LocallyRedundant"
      }
    ]
  },
  "resourceGroup": "testBkpVaultRG",
  "systemData": null,
  "tags": null,
  "type": "Microsoft.DataProtection/backupVaults"
}

Após a criação do cofre, vamos criar uma política de Cópia de Segurança para proteger os discos do Azure.

Criar uma política de Cópia de Segurança

Para compreender os componentes internos de uma política de Cópia de Segurança do Azure Disk Backup, obtenha o modelo de política com o comando az dataprotection backup-policy get-default-policy-template . Este comando devolve um modelo de política predefinido para um determinado tipo de origem de dados. Utilize este modelo de política para criar uma nova política.

az dataprotection backup-policy get-default-policy-template --datasource-type AzureDisk
{
  "datasourceTypes": [
    "Microsoft.Compute/disks"
  ],
  "name": "DiskPolicy",
  "objectType": "BackupPolicy",
  "policyRules": [
    {
      "backupParameters": {
        "backupType": "Incremental",
        "objectType": "AzureBackupParams"
      },
      "dataStore": {
        "dataStoreType": "OperationalStore",
        "objectType": "DataStoreInfoBase"
      },
      "name": "BackupHourly",
      "objectType": "AzureBackupRule",
      "trigger": {
        "objectType": "ScheduleBasedTriggerContext",
        "schedule": {
          "repeatingTimeIntervals": [
            "R/2020-04-05T13:00:00+00:00/PT4H"
          ]
        },
        "taggingCriteria": [
          {
            "isDefault": true,
            "tagInfo": {
              "id": "Default_",
              "tagName": "Default"
            },
            "taggingPriority": 99
          }
        ]
      }
    },
    {
      "isDefault": true,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P7D",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "OperationalStore",
            "objectType": "DataStoreInfoBase"
          }
        }
      ],
      "name": "Default",
      "objectType": "AzureRetentionRule"
    }
  ]
}

O modelo de política consiste num acionador (que decide o que aciona a cópia de segurança) e um ciclo de vida (que decide quando eliminar/copiar/mover a cópia de segurança). No Azure Disk Backup, os valores predefinidos para o acionador são um acionador agendado para cada 4 horas (PT4H) e para reter cada cópia de segurança durante sete dias.

Acionador agendado:

"trigger": {
        "objectType": "ScheduleBasedTriggerContext",
        "schedule": {
          "repeatingTimeIntervals": [
            "R/2020-04-05T13:00:00+00:00/PT4H"
          ]
        }
}

Ciclo de vida de retenção predefinido:

"lifecycles": [
        {
          "deleteAfter": {
            "duration": "P7D",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "OperationalStore",
            "objectType": "DataStoreInfoBase"
          }
        }
      ]

O Azure Disk Backup oferece várias cópias de segurança por dia. Se precisar de cópias de segurança mais frequentes, selecione a frequência de cópia de segurança por hora com a capacidade de fazer cópias de segurança com intervalos de 4, 6, 8 ou 12 horas. As cópias de segurança são agendadas com base no intervalo de tempo selecionado.

Por exemplo, se selecionar A cada 4 horas, as cópias de segurança são efetuadas aproximadamente no intervalo de cada 4 horas para que as cópias de segurança sejam distribuídas de forma igual ao longo do dia. Se uma cópia de segurança uma vez por dia for suficiente, selecione a frequência de cópia de segurança diária . Na frequência de cópia de segurança diária, pode especificar a hora do dia em que as cópias de segurança são efetuadas.

Importante

A hora do dia indica a hora de início da cópia de segurança e não a hora em que a cópia de segurança é concluída.

O tempo necessário para concluir a operação de cópia de segurança depende de vários fatores, incluindo o tamanho do disco, e da taxa de abandono entre cópias de segurança consecutivas. No entanto, o Azure Disk Backup é uma cópia de segurança sem agente que utiliza instantâneos incrementais, o que não afeta o desempenho da aplicação de produção.

Nota

Embora o cofre selecionado possa ter a definição de redundância global, atualmente, o Azure Disk Backup só suporta arquivos de dados instantâneos. Todas as cópias de segurança são armazenadas num grupo de recursos na sua subscrição e não são copiadas para o armazenamento do cofre de cópias de segurança.

Para saber mais detalhes sobre a criação de políticas, veja o documento de política do Azure Disk Backup .

Assim que o modelo for transferido como um ficheiro JSON, pode editá-lo para agendamento e retenção, conforme necessário. Em seguida, crie uma nova política com o JSON resultante. Se quiser editar a frequência horária ou o período de retenção, utilize os comandos az dataprotection backup-policy trigger set e/ou az dataprotection backup-policy retention-rule set . Assim que o JSON da política tiver todos os valores necessários, avance para criar uma nova política a partir do objeto de política com o comando az dataprotection backup-policy create .

az dataprotection backup-policy get-default-policy-template --datasource-type AzureDisk > policy.json
az dataprotection backup-policy create -g testBkpVaultRG --vault-name TestBkpVault -n mypolicy --policy policy.json
{
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault/backupPolicies/mypolicy",
"name": "mypolicy",
"properties": {
"datasourceTypes": [
"Microsoft.Compute/disks"
],
"objectType": "BackupPolicy",
"policyRules": [
{
"backupParameters": {
"backupType": "Incremental",
"objectType": "AzureBackupParams"
},
"dataStore": {
"dataStoreType": "OperationalStore",
"objectType": "DataStoreInfoBase"
},
"name": "BackupHourly",
"objectType": "AzureBackupRule",
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2020-04-05T13:00:00+00:00/PT4H"
]
},
"taggingCriteria": [
{
"criteria": null,
"isDefault": true,
"tagInfo": {
"eTag": null,
"id": "Default_",
"tagName": "Default"
},
"taggingPriority": 99
}
]
}
},
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P7D",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "OperationalStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": null
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
]
},
"resourceGroup": "testBkpVaultRG",
"systemData": null,
"type": "Microsoft.DataProtection/backupVaults/backupPolicies"
}

Configurar a cópia de segurança

Assim que o cofre e a política forem criados, existem três pontos críticos que tem de considerar para proteger um Disco do Azure.

Entidades-chave envolvidas

Disco a proteger

Obtenha o ID do ARM e a localização do disco a proteger. Isto servirá como o identificador do disco. Vamos utilizar um exemplo de um disco com o nome CLITestDisk, num grupo de recursos diskrg, numa subscrição diferente.

$DiskId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk"

Grupo de recursos de instantâneo

Os instantâneos de disco são armazenados num grupo de recursos na sua subscrição. Como orientação, recomendamos a criação de um grupo de recursos dedicado como um arquivo de dados instantâneo para ser utilizado pelo serviço Azure Backup. Ter um grupo de recursos dedicado permite restringir as permissões de acesso no grupo de recursos, proporcionando segurança e facilidade de gestão dos dados de cópia de segurança. Tenha em atenção o ID do ARM para o grupo de recursos onde pretende colocar os instantâneos do disco

$snapshotrg = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/snapshotrg"

Cofre de cópias de segurança

Os cofres de Cópia de Segurança necessitam de permissões no disco e no grupo de recursos de instantâneos para poderem acionar instantâneos e gerir o respetivo ciclo de vida. A identidade gerida atribuída pelo sistema do cofre é utilizada para atribuir essas permissões. Utilize o comando az dataprotection backup-vault update para ativar a identidade gerida atribuída pelo sistema para o Cofre dos Serviços de Recuperação.

az dataprotection backup-vault update -g testBkpVaultRG --vault-name TestBkpVault --type SystemAssigned

Atribuir permissões

Tem de atribuir algumas permissões através do RBAC ao cofre (representado pelo MSI do cofre) e ao disco relevante e/ou ao RG do disco. Estes podem ser executados através do portal do Azure ou da CLI. Para atribuir permissões relacionadas, veja os pré-requisitos para configurar a cópia de segurança de discos geridos.

Preparar o pedido

Assim que todas as permissões relevantes estiverem definidas, a configuração da cópia de segurança é efetuada em dois passos. Em primeiro lugar, preparamos o pedido relevante com o cofre, a política, o disco e o grupo de recursos instantâneos relevantes com o comando az dataprotection backup-instance initialize . O comando initialize devolverá um ficheiro JSON e, em seguida, terá de atualizar o valor do grupo de recursos de instantâneo. Em seguida, submetemos o pedido para proteger o disco com o comando az dataprotection backup-instance create .

az dataprotection backup-instance initialize --datasource-type AzureDisk  -l southeastasia --policy-id "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault/backupPolicies/mypolicy" --datasource-id "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk" > backup_instance.json

Abra o ficheiro JSON e edite o ID do grupo de recursos de instantâneo na resource_group_id secção abaixo data_store_parameters_list .

{
  "backup_instance_name": "diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166",
  "properties": {
    "data_source_info": {
      "datasource_type": "Microsoft.Compute/disks",
      "object_type": "Datasource",
      "resource_id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk",
      "resource_location": "southeastasia",
      "resource_name": "CLITestDisk",
      "resource_type": "Microsoft.Compute/disks",
      "resource_uri": ""
    },
    "data_source_set_info": null,
    "object_type": "BackupInstance",
    "policy_info": {
      "policy_id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault/backupPolicies/DiskPolicy",
      "policy_parameters": {
        "data_store_parameters_list": [
          {
            "data_store_type": "OperationalStore",
            "object_type": "AzureOperationalStoreParameters",
            "resource_group_id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/snapshotrg"
          }
        ]
      }
    }
  }
}

Nota

O nome da instância de cópia de segurança é gerado pelos clientes para que este seja um valor exclusivo. Baseia-se no nome da origem de dados e num GUID exclusivo. Depois de listar as instâncias de cópia de segurança, deverá conseguir verificar o nome da instância de cópia de segurança e o nome da origem de dados relevante.

Utilize o ficheiro JSON editado para criar uma instância de cópia de segurança do Azure Managed Disk.

az dataprotection backup-instance create -g testBkpVaultRG --vault-name TestBkpVault --backup-instance backup_instance.json
{
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault/backupInstances/diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166",
  "name": "diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166",
  "properties": {
    "currentProtectionState": "ProtectionConfigured",
    "dataSourceInfo": {
      "datasourceType": "Microsoft.Compute/disks",
      "objectType": "Datasource",
      "resourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk",
      "resourceLocation": "southeastasia",
      "resourceName": "CLITestDisk",
      "resourceType": "Microsoft.Compute/disks",
      "resourceUri": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk"
    },
    "dataSourceSetInfo": null,
    "friendlyName": "CLITestDisk",
    "objectType": "BackupInstance",
    "policyInfo": {
      "policyId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault/backupPolicies/DiskPolicy",
      "policyParameters": {
        "dataStoreParametersList": [
          {
            "dataStoreType": "OperationalStore",
            "objectType": "AzureOperationalStoreParameters",
            "resourceGroupId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/sarath-rg"
          }
        ]
      },
      "policyVersion": null
    },
    "protectionErrorDetails": null,
    "protectionStatus": {
      "errorDetails": null,
      "status": "ProtectionConfigured"
    },
    "provisioningState": "Succeeded"
  },
  "resourceGroup": "testBkpVaultRG",
  "systemData": null,
  "type": "Microsoft.DataProtection/backupVaults/backupInstances"
}

Assim que a instância de cópia de segurança for criada, pode continuar a acionar uma cópia de segurança a pedido se não quiser esperar pela agenda da política.

Executar uma cópia de segurança a pedido

Liste todas as instâncias de cópia de segurança num cofre com o comando az dataprotection backup-instance list e, em seguida, obtenha a instância relevante com o comando az dataprotection backup-instance show . Em alternativa, para cenários em escala, pode listar instâncias de cópia de segurança em cofres e subscrições com o comando az dataprotection backup-instance list-from-resourcegraph .

az dataprotection backup-instance list-from-resourcegraph --datasource-type AzureDisk --datasource-id /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk
[
  {
    "datasourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk",
    "extendedLocation": null,
    "id": "//subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault/backupInstances/diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166",
    "identity": null,
    "kind": "",
    "location": "",
    "managedBy": "",
    "name": "diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166",
    "plan": null,
    "properties": {
      "currentProtectionState": "ProtectionConfigured",
      "dataSourceInfo": {
        "baseUri": null,
        "datasourceType": "Microsoft.Compute/disks",
        "objectType": "Datasource",
        "resourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk",
        "resourceLocation": "westus",
        "resourceName": "CLITestDisk",
        "resourceType": "Microsoft.Compute/disks",
        "resourceUri": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk"
      },
      "dataSourceProperties": null,
      "dataSourceSetInfo": null,
      "datasourceAuthCredentials": null,
      "friendlyName": "CLITestDisk",
      "objectType": "BackupInstance",
      "policyInfo": {
        "policyId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault/backupPolicies/DiskPolicy",
        "policyParameters": {
          "dataStoreParametersList": [
            {
              "dataStoreType": "OperationalStore",
              "objectType": "AzureOperationalStoreParameters",
              "resourceGroupId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/snapshotrg"
            }
          ]
        },
        "policyVersion": null
      },
      "protectionErrorDetails": null,
      "protectionStatus": {
        "errorDetails": null,
        "status": "ProtectionConfigured"
      },
      "provisioningState": "Succeeded"
    },
    "protectionState": "ProtectionConfigured",
    "resourceGroup": "testBkpVaultRG",
    "sku": null,
    "subscriptionId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "tags": null,
    "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "type": "microsoft.dataprotection/backupvaults/backupinstances",
    "vaultName": "TestBkpVault",
    "zones": null
  }
]

Pode especificar uma regra e um tagname ao acionar a cópia de segurança. Para ver as regras na política, veja o JSON da política. No exemplo seguinte, a regra com o nome "BackupDaily"e o nome "default" da etiqueta é apresentada e iremos utilizar essa regra para a cópia de segurança a pedido.

"name": "BackupDaily",
        "objectType": "AzureBackupRule",
        "trigger": {
          "objectType": "ScheduleBasedTriggerContext",
          "schedule": {
            "repeatingTimeIntervals": [
              "R/2022-09-27T23:30:00+00:00/P1D"
            ],
            "timeZone": "UTC"
          },
         "taggingCriteria": [
           {
              "criteria": null,
              "isDefault": true,
              "tagInfo": {
                "eTag": null,
                "id": "Default_",
                "tagName": "Default"
              },
              "taggingPriority": 99
    }

Acione uma cópia de segurança a pedido com o comando az dataprotection backup-instance adhoc-backup .

az dataprotection backup-instance adhoc-backup --name "diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166" --rule-name "BackupDaily" --resource-group "000pikumar" --vault-name "PratikPrivatePreviewVault1" --retention-tag-override "default"

Tarefas de controlo

Controle todas as tarefas com o comando az dataprotection job list . Pode listar todas as tarefas e obter um detalhe específico da tarefa.

Também pode utilizar o Az.ResourceGraph para controlar todas as tarefas em todos os cofres de Cópia de Segurança. Utilize o comando az dataprotection job list-from-resourcegraph para obter a tarefa relevante que pode estar em qualquer cofre de Cópia de Segurança.

az dataprotection job list-from-resourcegraph --datasource-type AzureDisk --status Completed

Passos seguintes

Restaurar Discos Geridos do Azure com a CLI do Azure