Резервное копирование файлов Azure с помощью Azure Backup с помощью REST API

В этой статье описывается резервное копирование файлов Azure с помощью Azure Backup с помощью REST API. Вы также можете создать резервную копию файлов Azure с помощью портала Azure, ИНТЕРФЕЙСА командной строки и Azure PowerShell.

В этой статье предполагается, что вы уже создали хранилище служб восстановления и политику для настройки резервного копирования для общей папки. Если вы этого еще не сделали, обратитесь к руководствам по REST API по созданию хранилища и созданию политик, чтобы узнать, как создавать новые хранилища и политики.

В этой статье мы используем следующие ресурсы:

  • RecoveryServicesVault: azurefilesvault

  • Политика:schedule1

  • Группа ресурсов: azurefiles

  • Учётная запись для хранения: testvault2

  • Общий доступ к файлам: testshare

Сведения о поддерживаемых сценариях резервного копирования и восстановления файлов Azure, доступности регионов и ограничениях см. в таблице поддержки. Часто задаваемые вопросы см. в часто задаваемых вопросах.

Настройка резервного копирования для незащищенных файлов Azure с помощью REST API

Обнаружение учетных записей хранения с помощью незащищенных файлов Azure

Хранилище служб восстановления должно определить все учетные записи хранения Azure в подписке, которые содержат общие папки, доступные для резервного копирования в это хранилище. Это можно сделать с помощью операции обновления. Это асинхронная операция POST, которая гарантирует получение хранилищем самого актуального списка всех незащищенных Azure File Shares в текущей подписке и их кэширование. После кэширования общей папки службы восстановления могут получить доступ к общей папке и защитить ее.

POST https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{vaultresourceGroupname}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/refreshContainers?api-version=2016-12-01&$filter={$filter}

Для URI POST используются параметры {subscriptionId}, {vaultName}, {vaultresourceGroupName} и {fabricName}. В нашем примере значения для параметров будут выглядеть следующим образом:

  • {fabricName}: Azure

  • {vaultName}: azurefilesvault

  • {vaultresourceGroupName} это azurefiles

  • $filter=backupManagementType eq "AzureStorage"

Поскольку все необходимые параметры указаны в URI, необходимости в отдельном тексте запроса нет.

POST https://management.azure.com/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/refreshContainers?api-version=2016-12-01&$filter=backupManagementType eq 'AzureStorage'

Ответы на операцию обновления данных

Операция обновления — это асинхронная операция. Это означает, что такая операция создает другую операцию, которая должна отслеживаться отдельно.

Она возвращает два ответа: 202 (принято), когда создается другая операция, и 200 (ОК), когда эта операция завершается.

Примеры ответов на операцию обновления

После отправления запроса POST возвращается ответ 202 (принято).

HTTP/1.1 202 Accepted
'Pragma': 'no-cache'
'Expires': '-1'
'Location': ‘https://management.azure.com/Subscriptions/00000000-0000-0000-0000-000000000000/ResourceGroups
/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/operationResults/
cca47745-12d2-42f9-b3a4-75335f18fdf6?api-version=2016-12-01’
'Retry-After': '60'
'X-Content-Type-Options': 'nosniff'
'x-ms-request-id': '6cc12ceb-90a2-430d-a1ec-9b6b6fdea92b'
'x-ms-client-request-id': ‘3da383a5-d66d-4b7c-982a-bc8d94798d61,3da383a5-d66d-4b7c-982a-bc8d94798d61’
'Strict-Transport-Security': 'max-age=31536000; includeSubDomains'
'X-Powered-By': 'ASP.NET'
'x-ms-ratelimit-remaining-subscription-reads': '11996'
'x-ms-correlation-request-id': '6cc12ceb-90a2-430d-a1ec-9b6b6fdea92b'
'x-ms-routing-request-id': CENTRALUSEUAP:20200203T091326Z:6cc12ceb-90a2-430d-a1ec-9b6b6fdea92b'
'Date': 'Mon, 03 Feb 2020 09:13:25 GMT'

Отследите итоговую операцию, используя заголовок location с помощью простой команды GET.

GET https://management.azure.com/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/operationResults/cca47745-12d2-42f9-b3a4-75335f18fdf6?api-version=2016-12-01

После обнаружения всех учетных записей хранения Azure команда GET возвращает номер ответа 204 (содержимое отсутствует). Теперь хранилище может обнаруживать любую учетную запись хранения с общими папками, которые можно создать резервную копию в подписке.

HTTP/1.1 200 NoContent
Cache-Control  : no-cache
Pragma   : no-cache
X-Content-Type-Options  : nosniff
x-ms-request-id    : d9bdb266-8349-4dbd-9688-de52f07648b2
x-ms-client-request-id  : 3da383a5-d66d-4b7c-982a-bc8d94798d61,3da383a5-d66d-4b7c-982a-bc8d94798d61
Strict-Transport-Security  : max-age=31536000; includeSubDomains
X-Powered-By    : ASP.NET
x-ms-ratelimit-remaining-subscription-reads: 11933
x-ms-correlation-request-id   : d9bdb266-8349-4dbd-9688-de52f07648b2
x-ms-routing-request-id  : CENTRALUSEUAP:20200127T105304Z:d9bdb266-8349-4dbd-9688-de52f07648b2
Date   : Mon, 27 Jan 2020 10:53:04 GMT

Получение списка учетных записей хранения с файловыми общими ресурсами, которые можно резервировать с помощью хранилища служб восстановления.

Чтобы убедиться, что "кэширование" завершено, выведите список всех учетных записей хранения в подписке с общими папками, которые могут быть сохранены с помощью хранилища служб восстановления. Затем найдите нужную учетную запись хранения в ответе. Для этого используется операция GET ProtectableContainers.

GET https://management.azure.com/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/protectableContainers?api-version=2016-12-01&$filter=backupManagementType eq 'AzureStorage'

URI GET имеет все необходимые параметры. Для этой операции текст запроса также не требуется.

Пример текста ответа:

{

  "value": [

​    {

​      "id": "/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azurefiles/providers
 /Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/

protectableContainers/StorageContainer;Storage;AzureFiles;testvault2",

​      "name": "StorageContainer;Storage;AzureFiles;testvault2",

​      "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectableContainers",

​      "properties": {

​        "friendlyName": "testvault2",

​        "backupManagementType": "AzureStorage",

​        "protectableContainerType": "StorageContainer",

​        "healthStatus": "Healthy",

​        "containerId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/
 AzureFiles/providers/Microsoft.Storage/storageAccounts/testvault2"

​      }

​    }

  ]

}

Поскольку мы видим в тексте ответа учетную запись хранения testvault2 с понятным именем, выполненная выше операция обновления оказалась успешной. Теперь хранилище Служб восстановления может успешно обнаружить учетные записи хранения с незащищенными общими папками в этой подписке.

Регистрация учетной записи хранения в хранилище Служб восстановления

Этот шаг требуется только в том случае, если вы ранее не зарегистрировали учетную запись хранения в хранилище данных. Хранилище можно зарегистрировать с помощью операции ProtectionContainers-Register.

PUT https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}?api-version=2016-12-01

Задайте переменные для URI следующим образом:

  • {resourceGroupName}: azurefiles
  • {fabricName}: Azure
  • {vaultName}: azurefilesvault
  • {containerName}: это атрибут имени в тексте ответа операции GET ProtectableContainers. В нашем примере это StorageContainer;Storage;AzureFiles;testvault2

Примечание.

Всегда берите атрибут имени из ответа и подставляйте его в этот запрос. Не хардкодьте и не создавайте формат имени контейнера. Если вы создадите или жестко зададите его, вызов API будет завершаться ошибкой, если формат имени контейнера в будущем изменится.


PUT https://management.azure.com/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzureFiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/protectionContainers/StorageContainer;Storage;AzureFiles;testvault2?api-version=2016-12-01

Текст запроса создания имеет следующий вид:

{

 "properties": {


  "containerType": "StorageContainer",


  "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzureFiles/providers/Microsoft.Storage/storageAccounts/testvault2",


  "resourceGroup": "AzureFiles",


  "friendlyName": "testvault2",


  "backupManagementType": "AzureStorage"

 }
}

Для полного списка определений тела запроса и других сведений см. ProtectionContainers-Register.

Это асинхронная операция, которая возвращает два ответа: "202 Принято", когда операция принимается, и "200 ОК", когда она завершается. Для отслеживания состояния операции используйте заголовок location, чтобы получить её текущее состояние.

GET https://management.azure.com/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzureFiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/protectionContainers/StorageContainer;Storage;AzureFiles;testvault2/operationresults/1a3c8ee7-e0e5-43ed-b8b3-73cc992b6db9?api-version=2016-12-01

Пример текста ответа после завершения операции:

{
    "id": "/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzureFiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/
protectionContainers/StorageContainer;Storage;AzureFiles;testvault2",
    "name": "StorageContainer;Storage;AzureFiles;testvault2",
    "properties": {
        "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzureFiles/providers/Microsoft.Storage/storageAccounts/testvault2",
        "protectedItemCount": 0,
        "friendlyName": "testvault2",
        "backupManagementType": "AzureStorage",
        "registrationStatus": "Registered",
        "healthStatus": "Healthy",
        "containerType": "StorageContainer",
        "protectableObjectType": "StorageContainer"
    }
}

Можно проверить успешность регистрации из значения registrationstatus параметра в тексте ответа. В нашем случае он отображает статус как зарегистрированный для testvault2, поэтому операция регистрации прошла успешно.

Запрос всех незащищенных файловых общих папок в учетной записи хранилища

Запросить сведения о доступных для защиты элементах в учетной записи хранения можно с помощью операции Protection Containers-Inquire. Это асинхронная операция, и ее результаты нужно отслеживать с помощью заголовка location.

POST https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/inquire?api-version=2016-12-01

Задайте переменные для указанного выше URI следующим образом:

  • {vaultName}: azurefilesvault
  • {fabricName}: Azure
  • {containerName}: см. атрибут имени в тексте ответа операции GET ProtectableContainers. В нашем примере это StorageContainer;Storage;AzureFiles;testvault2.
https://management.azure.com/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/protectionContainers/StorageContainer;Storage;AzureFiles;testvault2/inquire?api-version=2016-12-01

При успешном выполнении запроса возвращается код состояния "ОК".

Cache-Control : no-cache
Pragma   : no-cache
X-Content-Type-Options: nosniff
x-ms-request-id  : 68727f1e-b8cf-4bf1-bf92-8e03a9d96c46
x-ms-client-request-id  : 3da383a5-d66d-4b7c-982a-bc8d94798d61,3da383a5-d66d-4b7c-982a-bc8d94798d61
Strict-Transport-Security: max-age=31536000; includeSubDomains
Server  : Microsoft-IIS/10.0
X-Powered-B : ASP.NET
x-ms-ratelimit-remaining-subscription-reads: 11932
x-ms-correlation-request-id  : 68727f1e-b8cf-4bf1-bf92-8e03a9d96c46
x-ms-routing-request-id   : CENTRALUSEUAP:20200127T105305Z:68727f1e-b8cf-4bf1-bf92-8e03a9d96c46
Date  : Mon, 27 Jan 2020 10:53:05 GMT

Выберите файловый ресурс, который вы хотите резервировать.

Вы можете перечислить все защищенные элементы в подписке и найти нужную общую папку для резервного копирования с помощью операции GET backupprotectableItems .

GET https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupProtectableItems?api-version=2016-12-01&$filter={$filter}

Составьте URI следующим образом:

  • {vaultName}: azurefilesvault
  • {$filter}: backupManagementType eq 'AzureStorage'
GET https://management.azure.com/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupProtectableItems?$filter=backupManagementType eq 'AzureStorage'&api-version=2016-12-01

Пример ответа:

Status Code:200

{
    "value": [
        {
            "id": "/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/protectionContainers/storagecontainer;storage;azurefiles;afaccount1/protectableItems/azurefileshare;azurefiles1",
            "name": "azurefileshare;azurefiles1",
            "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectableItems",
            "properties": {
                "parentContainerFabricId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzureFiles/providers/Microsoft.Storage/storageAccounts/afaccount1",
                "parentContainerFriendlyName": "afaccount1",
                "azureFileShareType": "XSMB",
                "backupManagementType": "AzureStorage",
                "workloadType": "AzureFileShare",
                "protectableItemType": "AzureFileShare",
                "friendlyName": "azurefiles1",
                "protectionState": "NotProtected"
            }
        },
        {
            "id": "/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/protectionContainers/storagecontainer;storage;azurefiles;afsaccount/protectableItems/azurefileshare;afsresource",
            "name": "azurefileshare;afsresource",
            "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectableItems",
            "properties": {
                "parentContainerFabricId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzureFiles/providers/Microsoft.Storage/storageAccounts/afsaccount",
                "parentContainerFriendlyName": "afsaccount",
                "azureFileShareType": "XSMB",
                "backupManagementType": "AzureStorage",
                "workloadType": "AzureFileShare",
                "protectableItemType": "AzureFileShare",
                "friendlyName": "afsresource",
                "protectionState": "NotProtected"
            }
        },
        {
            "id": "/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/protectionContainers/storagecontainer;storage;azurefiles;testvault2/protectableItems/azurefileshare;testshare",
            "name": "azurefileshare;testshare",
            "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectableItems",
            "properties": {
                "parentContainerFabricId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzureFiles/providers/Microsoft.Storage/storageAccounts/testvault2",
                "parentContainerFriendlyName": "testvault2",
                "azureFileShareType": "XSMB",
                "backupManagementType": "AzureStorage",
                "workloadType": "AzureFileShare",
                "protectableItemType": "AzureFileShare",
                "friendlyName": "testshare",
                "protectionState": "NotProtected"
            }
        }
    ]
}

Ответ содержит список всех незащищенных общих папок и содержит все сведения, необходимые службе восстановления Azure для настройки резервной копии.

Включение резервного копирования для общей папки

После того как соответствующее файловое хранилище "идентифицировано" с понятным именем, выберите политику защиты. Для получения дополнительной информации о существующих политиках в хранилище см. API списка политик. Выберите соответствующую политику по имени политики. Для создания политик см. руководство по созданию политик.

Включение защиты — это асинхронная операция PUT, которая создает защищенный элемент.

PUT https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{vaultresourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}?api-version=2019-05-13

Задайте переменные containername и protecteditemname с использованием атрибута ID в теле ответа операции GET backupprotectableitems.

В нашем примере идентификатор общей папки, которую мы хотим защитить, — это:

"/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/protectionContainers/storagecontainer;storage;azurefiles;testvault2/protectableItems/azurefileshare;testshare
  • {containername}: storagecontainer;storage;azurefiles;testvault2
  • {protectedItemName}: azurefileshare;testshare

Также можно воспользоваться атрибутом name защитного контейнера и ответами защищаемых элементов.

Примечание.

Всегда берите атрибут имени из ответа и подставляйте его в этот запрос. Не задавайте жестко код или не создавайте формат имени контейнера или формат имени защищенного элемента. Если вы создадите или жёстко закодируете это, вызов API будет завершаться ошибкой, если формат имени контейнера или защищенного элемента изменится в дальнейшем.


PUT https://management.azure.com/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/protectionContainers/StorageContainer;Storage;AzureFiles;testvault2/protectedItems/azurefileshare;testshare?api-version=2016-12-01

Создайте текст запроса:

Следующий текст запроса определяет свойства, необходимые для создания защищенного элемента.

{
  "properties": {
    "protectedItemType": "AzureFileShareProtectedItem",
    "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/AzureFiles/providers/Microsoft.Storage/storageAccounts/testvault2",
    "policyId": "/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupPolicies/schedule1"
  }
}

sourceResourceId — это parentcontainerFabricID в ответе на запрос GET для backupprotectableItems.

Пример ответа

Создание защищенного элемента — это асинхронная операция, создающая другую операцию, которую необходимо отслеживать. Она возвращает два ответа: 202 (принято), когда создается другая операция, и 200 (ОК), когда эта операция завершается.

После отправки запроса PUT для создания или обновления защищенного элемента будет получен первоначальный ответ 202 (принято) с заголовком location.

HTTP/1.1 202 Accepted
Cache-Control  : no-cache
Pragma  : no-cache
Location : https://management.azure.com/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/protectionContainers/StorageContainer;Storage;AzureFiles;testvault2/protectedItems/azurefileshare;testshare/operationResults/c3a52d1d-0853-4211-8141-477c65740264?api-version=2016-12-01
Retry-Afte  : 60
Azure-AsyncOperation  : https://management.azure.com/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/protectionContainers/StorageContainer;Storage;AzureFiles;testvault2/protectedItems/azurefileshare;testshare/operationResults/c3a52d1d-0853-4211-8141-477c65740264?api-version=2016-12-01
X-Content-Type-Options : nosniff
x-ms-request-id : b55527fa-f473-4f09-b169-9cc3a7a39065
x-ms-client-request-id: 3da383a5-d66d-4b7c-982a-bc8d94798d61,3da383a5-d66d-4b7c-982a-bc8d94798d61
Strict-Transport-Security : max-age=31536000; includeSubDomains
X-Powered-By  : ASP.NET
x-ms-ratelimit-remaining-subscription-writes: 1198
x-ms-correlation-request-id : b55527fa-f473-4f09-b169-9cc3a7a39065
x-ms-routing-request-id  : CENTRALUSEUAP:20200127T105412Z:b55527fa-f473-4f09-b169-9cc3a7a39065
Date : Mon, 27 Jan 2020 10:54:12 GMT

Затем с помощью команды GET отследите итоговую операцию, используя заголовок Location или Azure-AsyncOperation.

GET https://management.azure.com/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupOperations/c3a52d1d-0853-4211-8141-477c65740264?api-version=2016-12-01

Завершенная операция возвращает код 200 (ОК) с содержимым защищенного элемента в тексте ответа.

Пример текста ответа:

{
    "id": "c3a52d1d-0853-4211-8141-477c65740264",
    "name": "c3a52d1d-0853-4211-8141-477c65740264",
    "status": "Succeeded",
    "startTime": "2020-02-03T18:10:48.296012Z",
    "endTime": "2020-02-03T18:10:48.296012Z",
    "properties": {
        "objectType": "OperationStatusJobExtendedInfo",
        "jobId": "e2ca2cf4-2eb9-4d4b-b16a-8e592d2a658b"
    }
}

Это подтверждает, что защита включена для общей папки, а первая резервная копия будет активирована в соответствии с расписанием политики.

Запуск резервного копирования по запросу для файлового хранилища

После настройки службы "Файлы Azure" для резервного копирования резервные копии выполняются в соответствии с расписанием политики. Вы можете дождаться первого запланированного резервного копирования или активировать эту операцию по требованию в любое время.

Активация резервного копирования по запросу — это операция POST.

POST https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/backup?api-version=2016-12-01

{containerName} и {protectedItemName} задаются, как указано выше для включения резервного копирования. В нашем примере мы получим следующее:

POST https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/protectionContainers/StorageContainer;storage;azurefiles;testvault2/protectedItems/AzureFileShare;testshare/backup?api-version=2017-07-01

Создание текста запроса

Чтобы запустить резервное копирование по запросу, следующие компоненты должны быть включены в тело запроса.

Имя. Тип Описание
Свойства AzureFileShareBackupRequest Свойства BackupRequestResource

Полный список определений в тексте запроса и другие сведения см. в документации по активации резервного копирования для защищенных элементов для REST API.

Пример текста запроса

{

  "properties":{

   "objectType":"AzureFileShareBackupRequest",
    "recoveryPointExpiryTimeInUTC":"2020-03-07T18:29:59.000Z"
}

}

Ответы на операцию резервного копирования по запросу

Активация резервного копирования по запросу — это асинхронная операция. Это означает, что такая операция создает другую операцию, которая должна отслеживаться отдельно.

Она возвращает два ответа: 202 (принято), когда создается другая операция, и 200 (ОК), когда эта операция завершается.

Примеры ответов на операцию резервного копирования по запросу

После отправки запроса POST для выполнения резервного копирования по запросу будет получен первоначальный ответ 202 (Принято) с заголовком Location или Azure-Async-Header.

'Cache-Control': 'no-cache'
'Pragma': 'no-cache'
'Expires': '-1'
'Location': https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/protectionContainers/StorageContainer;storage;azurefiles;testvault2/protectedItems/AzureFileShare;testshare/operationResults/dc62d524-427a-4093-968d-e951c0a0726e?api-version=2017-07-01
'Retry-After': '60'
'Azure-AsyncOperation': https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/protectionContainers/StorageContainer;storage;azurefiles;testvault2/protectedItems/AzureFileShare;testshare/operationsStatus/dc62d524-427a-4093-968d-e951c0a0726e?api-version=2017-07-01
'X-Content-Type-Options': 'nosniff'
'x-ms-request-id': '2e03b8d4-66b1-48cf-8094-aa8bff57e8fb'
'x-ms-client-request-id': 'a644712a-4895-11ea-ba57-0a580af42708, a644712a-4895-11ea-ba57-0a580af42708'
'Strict-Transport-Security': 'max-age=31536000; includeSubDomains'
'X-Powered-By': 'ASP.NET'
'x-ms-ratelimit-remaining-subscription-writes': '1199'
'x-ms-correlation-request-id': '2e03b8d4-66b1-48cf-8094-aa8bff57e8fb'
'x-ms-routing-request-id': 'WESTEUROPE:20200206T040339Z:2e03b8d4-66b1-48cf-8094-aa8bff57e8fb'
'Date': 'Thu, 06 Feb 2020 04:03:38 GMT'
'Content-Length': '0'

Затем с помощью команды GET отследите итоговую операцию, используя заголовок Location или Azure-AsyncOperation.

GET https://management.azure.com/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupOperations/dc62d524-427a-4093-968d-e951c0a0726e?api-version=2016-12-01

Завершенная операция возвращает код 200 (ОК) с идентификатором результата задания резервного копирования в тексте ответа.

Образец текста ответа

{
    "id": "dc62d524-427a-4093-968d-e951c0a0726e",
    "name": "dc62d524-427a-4093-968d-e951c0a0726e",
    "status": "Succeeded",
    "startTime": "2020-02-06T11:06:02.1327954Z",
    "endTime": "2020-02-06T11:06:02.1327954Z",
    "properties": {
        "objectType": "OperationStatusJobExtendedInfo",
        "jobId": "39282261-cb52-43f5-9dd0-ffaf66beeaef"
    }
}

Так как задание резервного копирования — это длительная операция, оно должно отслеживаться, как описано в документации по мониторингу заданий для REST API.

Следующие шаги