مشاركة عبر


استعادة أقراص Azure المُدارة باستخدام Azure CLI

توضح هذه المقالة كيفية استعادة أقراص Azure المُدارة من نقطة استعادة تم إنشاؤها باستخدام Azure CLI.

هام

دعم النسخ الاحتياطي والاستعادة لأقراص Azure المُدارة عبر CLI يوجد في الإصدار الأولي ومتاحًا كامتداد في الإصدار 2.15.0 Az والإصدارات الأحدث. يتم تثبيت الملحق تلقائياً عندما تقوم بتشغيل أوامر az dataprotection. تعرف على المزيد حول الملاحق.

حالياً، لا يتم دعم خيار استعادة الموقع الأصلي (OLR) الخاص بالاستعادة عن طريق استبدال القرص المصدر الموجود حيث تم أخذ النسخ الاحتياطية. يمكنك الاستعادة من نقطة استرداد لإنشاء قرص جديد في نفس مجموعة الموارد للقرص المصدر أو في أي مجموعة موارد أخرى، والتي تسمى استرداد الموقع البديل (ALR).

هنا، دعونا نستخدم مخزن النسخ الاحتياطي الحالي TestBkpVault، ضمن مجموعة الموارد testBkpVaultRG في الأمثلة.

استعادة لإنشاء قرص جديد

إعداد الأذونات

يستخدم مخزن النسخ الاحتياطي هوية مُدارة للوصول إلى موارد Azure الأخرى. للاستعادة من النسخة الاحتياطية، تتطلب الهوية المُدارة لـ Backup vault مجموعة من الأذونات على مجموعة الموارد حيث ستتم استعادة القرص.

يستخدم مخزن النسخ الاحتياطي هوية مُدارة معينة من قبل النظام، والتي تقتصر على واحد لكل مورد ومرتبط بدورة حياة هذا المورد. يمكنك منح أذونات للهوية المدارة باستخدام عنصر التحكم في الوصول استناداً إلى الدور (Azure RBAC). الهوية المدارة هي كيان خدمة من نوع خاص يمكن استخدامه فقط مع موارد Azure. تعرف على المزيد حول الهويات المدارة.

قم بتعيين الأذونات ذات الصلة للهوية المُدارة، التي تم تعيينها لنظام المخزن على مجموعة الموارد المستهدفة حيث سيتم استعادة/إنشاء الأقراص كما هو مذكور هنا.

إحضار نقطة الاسترداد ذات الصلة

لسرد كل مثيلات النسخ الاحتياطي داخل مخزن، استخدم الأمر az dataprotection backup-instance list، ومن ثم جلب المثيل ذات الصلة باستخدام الأمر az dataprotection backup-instance show. بدلاً من ذلك، بالنسبة للسيناريوهات على نطاق واسع، يمكنك سرد مثيلات النسخ الاحتياطي عبر الخزائن والاشتراكات باستخدام 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-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "identity": null,
    "kind": "",
    "location": "",
    "managedBy": "",
    "name": "diskrg-CLITestDisk-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "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
  }
]

بمجرد تحديد المثيل، اجلب نقطة الاسترداد ذات الصلة باستخدام الأمر az dataprotection recovery-point list.

az dataprotection recovery-point list --backup-instance-name diskrg-CLITestDisk-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e -g testBkpVaultRG --vault-name TestBkpVault
{
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault/backupInstances/diskrg-CLITestDisk-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/recoveryPoints/5081ad8f1e6c4548ae89536d0d45c493",
"name": "5081ad8f1e6c4548ae89536d0d45c493",
"properties": {
"friendlyName": "0f598ced-cbfe-4169-b962-ee94b0210490",
"objectType": "AzureBackupDiscreteRecoveryPoint",
"policyName": "DiskPSPolicy2",
"policyVersion": null,
"recoveryPointDataStoresDetails": [
{
"creationTime": "2021-06-08T09:01:57.708319+00:00",
"expiryTime": "2021-06-15T09:01:57.708319+00:00",
"id": "c2ad4629-f2ef-49b6-b3f8-50f3eb5404f4",
"metaData": null,
"rehydrationExpiryTime": null,
"rehydrationStatus": null,
"state": "COMMITTED",
"type": "OperationalStore",
"visible": true
}
],
"recoveryPointId": "5081ad8f1e6c4548ae89536d0d45c493",
"recoveryPointTime": "2021-06-08T09:01:57.708319+00:00",
"recoveryPointType": "Incremental",
"retentionTagName": "Default",
"retentionTagVersion": "637553616953961153"
},
"resourceGroup": "testBkpVaultRG",
"systemData": null,
"type": "Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints"
},
{
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault/backupInstances/diskrg-CLITestDisk-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/recoveryPoints/039322cc563049bcbdb77bd695d4c02c",
"name": "039322cc563049bcbdb77bd695d4c02c",
"properties": {
"friendlyName": "af6512b6-aa38-4966-b8e1-660c4eccdc0d",
"objectType": "AzureBackupDiscreteRecoveryPoint",
"policyName": "DiskPSPolicy2",
"policyVersion": null,
"recoveryPointDataStoresDetails": [
{
"creationTime": "2021-06-08T05:01:55.426507+00:00",
"expiryTime": "2021-06-15T05:01:55.426507+00:00",
"id": "c2ad4629-f2ef-49b6-b3f8-50f3eb5404f4",
"metaData": null,
"rehydrationExpiryTime": null,
"rehydrationStatus": null,
"state": "COMMITTED",
"type": "OperationalStore",
"visible": true
}
],
"recoveryPointId": "039322cc563049bcbdb77bd695d4c02c",
"recoveryPointTime": "2021-06-08T05:01:55.426507+00:00",
"recoveryPointType": "Incremental",
"retentionTagName": "Default",
"retentionTagVersion": "637553616953961153"
},
"resourceGroup": "testBkpVaultRG",
"systemData": null,
"type": "Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints"
}
]

على سبيل المثال، يقوم الاستعلام التالي بإرجاع أحدث نقطة استرداد.

az dataprotection recovery-point list --backup-instance-name diskrg-CLITestDisk-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e -g testBkpVaultRG --vault-name TestBkpVault --query "[0].id"

"/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/sarath-vault/backupInstances/clitest-clitest-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/recoveryPoints/5081ad8f1e6c4548ae89536d0d45c493"

تحضير طلب الاستعادة

قم بإنشاء معرف ARM للقرص الجديد، الذي سيتم إنشاؤه باستخدام مجموعة الموارد المستهدفة، والتي تم تعيين الأذونات لها كما هو مفصل أعلاه، واسم القرص المطلوب. سنستخدم مثالاً لقرص يسمى CLITestDisk2، ضمن مجموعة موارد targetrg ضمن اشتراك مختلف.

$targetDiskId = /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/Microsoft.Compute/disks/CLITestDisk2

استخدم الأمر az dataprotection backup-instance restore initialize-for-data-recovery لإعداد طلب استعادة مع كل التفاصيل ذات الصلة.

az dataprotection backup-instance restore initialize-for-data-recovery --datasource-type AzureDisk --restore-location southeastasia --source-datastore OperationalStore --recovery-point-id 5081ad8f1e6c4548ae89536d0d45c493 --target-resource-id /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/Microsoft.Compute/disks/CLITestDisk2 > restore.json
{
  "object_type": "AzureBackupRecoveryPointBasedRestoreRequest",
  "recovery_point_id": "77594ce0470849e79b86a6875b726dca",
  "restore_target_info": {
    "datasource_info": {
      "datasource_type": "Microsoft.Compute/disks",
      "object_type": "Datasource",
      "resource_id": "//subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/Microsoft.Compute/disks/CLITestDisk2",
      "resource_location": "southeastasia",
      "resource_name": "CLITestDisk2",
      "resource_type": "Microsoft.Compute/disks",
      "resource_uri": ""
    },
    "object_type": "RestoreTargetInfo",
    "recovery_option": "FailIfExists",
    "restore_location": "southeastasia"
  },
  "source_data_store_type": "OperationalStore"
}

يمكنك أيضاً التحقق من صحة إذا كان ملف JSON سينجح في إنشاء موارد جديدة باستخدام الأمر az dataprotection backup-instance validate-for-restore.

az dataprotection backup-instance validate-for-restore -g testBkpVaultRG --vault-name TestBkpVault --backup-instance-name diskrg-CLITestDisk-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e --restore-request-object restore.json

تشغيل الاستعادة

استخدم الأمر az dataprotection backup-instance restore trigger لتشغيل عملية الاستعادة مع الطلب المعدة أعلاه.

az dataprotection backup-instance restore trigger -g testBkpVaultRG --vault-name TestBkpVault --backup-instance-name diskrg-CLITestDisk-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e --restore-request-object restore.json

وظيفة التتبع

تعقب كل المهام باستخدام الأمر az dataprotection job list. يمكنك سرد جميع الوظائف وجلب تفاصيل مهمة معينة.

يمكنك أيضاً استخدام Az.ResourceGraph لتعقب جميع المهام عبر جميع مخازن النسخ الاحتياطي. استخدم الأمر az dataprotection job list-from-resourcegraph للحصول على المهمة ذات الصلة والتي يمكن أن تكون في أي خزينة من خزائن النسخ الاحتياطي.

az dataprotection job list-from-resourcegraph --datasource-type AzureDisk --operation Restore

الخطوات التالية

الأسئلة الشائعة حول النسخ الاحتياطي على أقراص في Azure