Przywracanie udziałów plików platformy Azure przy użyciu interfejsu API REST
W tym artykule wyjaśniono, jak przywrócić cały udział plików lub określone pliki z punktu przywracania utworzonego przez usługę Azure Backup przy użyciu interfejsu API REST.
Na końcu tego artykułu dowiesz się, jak wykonywać następujące operacje przy użyciu interfejsu API REST:
- Wyświetlanie punktów przywracania dla kopii zapasowej udziału plików platformy Azure.
- Przywracanie pełnego udziału plików platformy Azure.
- Przywracanie pojedynczych plików lub folderów.
Wymagania wstępne
Przyjęto założenie, że masz już kopię zapasową udziału plików, który chcesz przywrócić. Jeśli tego nie zrobisz, zapoznaj się z tematem Tworzenie kopii zapasowej udziału plików platformy Azure przy użyciu interfejsu API REST, aby dowiedzieć się, jak je utworzyć.
W tym artykule użyjemy następujących zasobów:
- RecoveryServicesVault: azurefilesvault
- Grupa zasobów: azurefiles
- Konto magazynu: afsaccount
- Udział plików: azurefiles
Pobieranie właściwości ContainerName i ProtectedItemName
W przypadku większości wywołań interfejsu API powiązanego z przywracaniem należy przekazać wartości parametrów identyfikatora URI {containerName} i {protectedItemName}. Użyj atrybutu ID w treści odpowiedzi operacji GET backupprotectableitems , aby pobrać wartości dla tych parametrów. W naszym przykładzie identyfikator udziału plików, który chcemy chronić, to:
"/Subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/protectionContainers/storagecontainer;storage;azurefiles;afsaccount/protectableItems/azurefileshare;azurefiles
Dlatego wartości są tłumaczone w następujący sposób:
- {containername} — storagecontainer; składowanie; azurefiles; afsaccount
- {protectedItemName} — azurefileshare; azurefiles
Pobieranie punktów odzyskiwania dla kopii zapasowej udziału plików platformy Azure
Aby przywrócić dowolny udział plików lub pliki kopii zapasowej, najpierw wybierz punkt odzyskiwania, aby wykonać operację przywracania. Dostępne punkty odzyskiwania elementu kopii zapasowej można wyświetlić przy użyciu wywołania interfejsu API REST listy punktów odzyskiwania. Jest to operacja GET ze wszystkimi odpowiednimi wartościami.
GET https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/recoveryPoints?api-version=2019-05-13&$filter={$filter}
Ustaw wartości identyfikatora URI w następujący sposób:
- {fabricName}: Azure
- {vaultName}: azurefilesvault
- {containername}: storagecontainer; składowanie; azurefiles; afsaccount
- {protectedItemName}: azurefileshare; azurefiles
- {ResourceGroupName}: azurefiles
Identyfikator URI GET zawiera wszystkie wymagane parametry. Nie ma potrzeby innej treści żądania.
GET https://management.azure.com/Subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/protectionContainers/StorageContainer;storage;azurefiles;afsaccount/protectedItems/AzureFileShare;azurefiles/recoveryPoints?api-version=2019-05-13
Przykładowa odpowiedź na potrzeby pobierania punktów odzyskiwania
Po przesłaniu identyfikatora URI GET zwracana jest odpowiedź 200:
HTTP/1.1" 200 None
'Cache-Control': 'no-cache'
'Pragma': 'no-cache'
'Transfer-Encoding': 'chunked'
'Content-Type': 'application/json'
'Content-Encoding': 'gzip'
'Expires': '-1'
'Vary': 'Accept-Encoding'
'X-Content-Type-Options': 'nosniff'
'x-ms-request-id': 'd68d7951-7d97-4c49-9a2d-7fbaab55233a'
'x-ms-client-request-id': '4edb5a58-47ea-11ea-a27a-0a580af41908, 4edb5a58-47ea-11ea-a27a-0a580af41908'
'Strict-Transport-Security': 'max-age=31536000; includeSubDomains'
'Server': 'Microsoft-IIS/10.0'
'X-Powered-By': 'ASP.NET'
'x-ms-ratelimit-remaining-subscription-reads': '11998'
'x-ms-correlation-request-id': 'd68d7951-7d97-4c49-9a2d-7fbaab55233a'
'x-ms-routing-request-id': 'WESTEUROPE:20200205T073708Z:d68d7951-7d97-4c49-9a2d-7fbaab55233a'
'Date': 'Wed, 05 Feb 2020 07:37:08 GMT'
{
“value”:[
{
"eTag": null,
"id": "/Subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/protectionContainers/StorageContainer;storage;azurefiles;afsaccount/protectedItems/AzureFileShare;azurefiles/recoveryPoints/932881138555802864",
"location": null,
"name": "932881138555802864",
"properties": {
"fileShareSnapshotUri": "https://afsaccount.file.core.windows.net/azurefiles?sharesnapshot=2020-02-04T08:01:35.0000000Z",
"objectType": "AzureFileShareRecoveryPoint",
"recoveryPointSizeInGb": 1,
"recoveryPointTime": "2020-02-04T08:01:35+00:00",
"recoveryPointType": "FileSystemConsistent"
},
"resourceGroup": "azurefiles",
"tags": null,
"type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints"
},
{
"eTag": null,
"id": "/Subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/protectionContainers/StorageContainer;storage;azurefiles;afsaccount/protectedItems/AzureFileShare;azurefiles/recoveryPoints/932878582606969225",
"location": null,
"name": "932878582606969225",
"properties": {
"fileShareSnapshotUri": "https://afsaccount.file.core.windows.net/azurefiles?sharesnapshot=2020-02-03T08:05:30.0000000Z",
"objectType": "AzureFileShareRecoveryPoint",
"recoveryPointSizeInGb": 1,
"recoveryPointTime": "2020-02-03T08:05:30+00:00",
"recoveryPointType": "FileSystemConsistent"
},
"resourceGroup": "azurefiles",
"tags": null,
"type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints"
},
{
"eTag": null,
"id": "/Subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/protectionContainers/StorageContainer;storage;azurefiles;afsaccount/protectedItems/AzureFileShare;azurefiles/recoveryPoints/932890167574511261",
"location": null,
"name": "932890167574511261",
"properties": {
"fileShareSnapshotUri": "https://afsaccount.file.core.windows.net/azurefiles?sharesnapshot=2020-02-02T08:03:50.0000000Z",
"objectType": "AzureFileShareRecoveryPoint",
"recoveryPointSizeInGb": 1,
"recoveryPointTime": "2020-02-02T08:03:50+00:00",
"recoveryPointType": "FileSystemConsistent"
},
"resourceGroup": "azurefiles",
"tags": null,
"type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints"
},
Punkt odzyskiwania jest identyfikowany z polem {name} w powyższej odpowiedzi.
Odzyskiwanie pełnego udziału przy użyciu interfejsu API REST
Użyj tej opcji przywracania, aby przywrócić pełny udział plików w oryginalnej lub alternatywnej lokalizacji. Wyzwalanie przywracania jest żądaniem POST i można wykonać tę operację przy użyciu interfejsu API REST przywracania wyzwalacza.
POST https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/recoveryPoints/{recoveryPointId}/restore?api-version=2019-05-13
Wartości {containerName} i {protectedItemName} są ustawione tutaj , a identyfikator recoveryPointID to pole {name} punktu odzyskiwania wymienionego powyżej.
POST https://management.azure.com/Subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/protectionContainers/StorageContainer;storage;azurefiles;afsaccount/protectedItems/AzureFileShare%3Bazurefiles/recoveryPoints/932886657837421071/restore?api-version=2019-05-13'
Tworzenie treści żądania
Aby wyzwolić przywracanie udziału plików platformy Azure, poniżej przedstawiono składniki treści żądania:
Nazwisko | Pisz | Opis |
---|---|---|
Właściwości | AzureFileShareRestoreRequest | Właściwości RestoreRequestResource |
Pełną listę definicji treści żądania i innych szczegółów można znaleźć w dokumencie interfejsu API REST przywracania wyzwalacza.
Przywracanie do oryginalnej lokalizacji
Przykład treści żądania przywracania do oryginalnej lokalizacji
Następująca treść żądania definiuje właściwości wymagane do wyzwolenia przywracania udziału plików platformy Azure:
{
"properties":{
"objectType":"AzureFileShareRestoreRequest",
"recoveryType":"OriginalLocation",
"sourceResourceId":"/subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/AzureFiles/providers/Microsoft.Storage/storageAccounts/afsaccount",
"copyOptions":"Overwrite",
"restoreRequestType":"FullShareRestore"
}
}
Przywracanie do lokalizacji alternatywnej
Określ następujące parametry odzyskiwania lokalizacji alternatywnej:
- targetResourceId: konto magazynu, do którego jest przywracana zawartość kopii zapasowej. Docelowe konto magazynu musi znajdować się w tej samej lokalizacji co magazyn.
- name: udział plików na docelowym koncie magazynu, do którego przywracana jest kopia zapasowa zawartości.
- targetFolderPath: folder w udziale plików, do którego przywrócono dane.
Przykład treści żądania dla przywracania do lokalizacji alternatywnej
Następująca treść żądania przywraca udział plików azurefiles na koncie magazynu afsaccount do udziału plików azurefiles1 na koncie magazynu afaccount1 .
{
"properties":{
"objectType":"AzureFileShareRestoreRequest",
"recoveryType":"AlternateLocation",
"sourceResourceId":"/subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/AzureFiles/providers/Microsoft.Storage/storageAccounts/afsaccount",
"copyOptions":"Overwrite",
"restoreRequestType":"FullShareRestore",
"restoreFileSpecs":[
{
"targetFolderPath":"restoredata"
}
],
"targetDetails":{
"name":"azurefiles1",
"targetResourceId":"/subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/AzureFiles/providers/Microsoft.Storage/storageAccounts/afaccount1"
}
}
}
Response
Wyzwalanie operacji przywracania jest operacją asynchroniczną. Ta operacja tworzy kolejną operację, która musi być śledzona oddzielnie. Zwraca ona dwie odpowiedzi: 202 (Zaakceptowane) podczas tworzenia innej operacji i 200 (OK) po zakończeniu tej operacji.
Przykład odpowiedzi
Po przesłaniu identyfikatora URI POST do wyzwolenia przywracania początkowa odpowiedź to 202 (Zaakceptowane) z nagłówkiem lokalizacji lub nagłówkiem azure-async-header.
HTTP/1.1" 202
'Cache-Control': 'no-cache'
'Pragma': 'no-cache'
'Expires': '-1'
'Location': 'https://management.azure.com/Subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/protectionContainers/StorageContainer;storage;azurefiles;afsaccount/protectedItems/AzureFileShare;azurefiles/operationResults/68ccfbc1-a64f-4b29-b955-314b5790cfa9?api-version=2019-05-13'
'Retry-After': '60'
'Azure-AsyncOperation': 'https://management.azure.com/Subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/protectionContainers/StorageContainer;storage;azurefiles;afsaccount/protectedItems/AzureFileShare;azurefiles/operationsStatus/68ccfbc1-a64f-4b29-b955-314b5790cfa9?api-version=2019-05-13'
'X-Content-Type-Options': 'nosniff'
'x-ms-request-id': '2426777d-c5ec-44b6-a324-384f8947460c'
'x-ms-client-request-id': '3c743096-47eb-11ea-ae90-0a580af41908, 3c743096-47eb-11ea-ae90-0a580af41908'
'Strict-Transport-Security': 'max-age=31536000; includeSubDomains'
'X-Powered-By': 'ASP.NET'
'x-ms-ratelimit-remaining-subscription-writes': '1198'
'x-ms-correlation-request-id': '2426777d-c5ec-44b6-a324-384f8947460c'
'x-ms-routing-request-id': 'WESTEUROPE:20200205T074347Z:2426777d-c5ec-44b6-a324-384f8947460c'
'Date': 'Wed, 05 Feb 2020 07:43:47 GMT'
Następnie śledź wynikową operację przy użyciu nagłówka lokalizacji lub nagłówka Azure-AsyncOperation za pomocą polecenia GET.
GET https://management.azure.com/Subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupOperations/68ccfbc1-a64f-4b29-b955-314b5790cfa9?api-version=2016-12-01
Po zakończeniu operacji zwraca ona wartość 200 (OK) z identyfikatorem wynikowego zadania przywracania w treści odpowiedzi.
HTTP/1.1" 200
'Cache-Control': 'no-cache'
'Pragma': 'no-cache'
'Transfer-Encoding': 'chunked'
'Content-Type': 'application/json'
'Content-Encoding': 'gzip'
'Expires': '-1'
'Vary': 'Accept-Encoding'
'X-Content-Type-Options': 'nosniff'
'x-ms-request-id': '41ee89b2-3be4-40d8-8ff6-f5592c2571e3'
'x-ms-client-request-id': '3c743096-47eb-11ea-ae90-0a580af41908, 3c743096-47eb-11ea-ae90-0a580af41908'
'Strict-Transport-Security': 'max-age=31536000; includeSubDomains'
'Server': 'Microsoft-IIS/10.0'
'X-Powered-By': 'ASP.NET'
'x-ms-ratelimit-remaining-subscription-reads': '11998'
'x-ms-correlation-request-id': '41ee89b2-3be4-40d8-8ff6-f5592c2571e3'
'x-ms-routing-request-id': 'WESTEUROPE:20200205T074348Z:41ee89b2-3be4-40d8-8ff6-f5592c2571e3'
'Date': 'Wed, 05 Feb 2020 07:43:47 GMT'
{
"id": "/Subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupJobs/a7e97e42-4e54-4d4b-b449-26fcf946f42c",
"location": null,
"name": "a7e97e42-4e54-4d4b-b449-26fcf946f42c",
"properties": {
"actionsInfo": [
"Cancellable"
],
"activityId": "3c743096-47eb-11ea-ae90-0a580af41908",
"backupManagementType": "AzureStorage",
"duration": "0:00:01.863098",
"endTime": null,
"entityFriendlyName": "azurefiles",
"errorDetails": null,
"extendedInfo": {
"dynamicErrorMessage": null,
"propertyBag": {},
"tasksList": []
},
"jobType": "AzureStorageJob",
"operation": "Restore",
"startTime": "2020-02-05T07:43:47.144961+00:00",
"status": "InProgress",
"storageAccountName": "afsaccount",
"storageAccountVersion": "Storage"
},
"resourceGroup": "azurefiles",
"tags": null,
"type": "Microsoft.RecoveryServices/vaults/backupJobs"
}
W przypadku odzyskiwania lokalizacji alternatywnej treść odpowiedzi będzie wyglądać następująco:
{
"id": "/Subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupJobs/7e0ee41e-6e31-4728-a25c-98ff6b777641",
"location": null,
"name": "7e0ee41e-6e31-4728-a25c-98ff6b777641",
"properties": {
"actionsInfo": [
"Cancellable"
],
"activityId": "6077be6e-483a-11ea-a915-0a580af4ad72",
"backupManagementType": "AzureStorage",
"duration": "0:00:02.171965",
"endTime": null,
"entityFriendlyName": "azurefiles",
"errorDetails": null,
"extendedInfo": {
"dynamicErrorMessage": null,
"propertyBag": {
"Data Transferred (in MB)": "0",
"Job Type": "Recover to an alternate file share",
"Number Of Failed Files": "0",
"Number Of Restored Files": "0",
"Number Of Skipped Files": "0",
"RestoreDestination": "afaccount1/azurefiles1/restoredata",
"Source File Share Name": "azurefiles",
"Source Storage Account Name": "afsaccount",
"Target File Share Name": "azurefiles1",
"Target Storage Account Name": "afaccount1"
},
"tasksList": []
},
"jobType": "AzureStorageJob",
"operation": "Restore",
"startTime": "2020-02-05T17:10:18.106532+00:00",
"status": "InProgress",
"storageAccountName": "afsaccount",
"storageAccountVersion": "ClassicCompute"
},
"resourceGroup": "azurefiles",
"tags": null,
"type": "Microsoft.RecoveryServices/vaults/backupJobs"
}
Ponieważ zadanie tworzenia kopii zapasowej jest długotrwałą operacją, powinno być śledzone zgodnie z opisem w dokumencie monitorowania zadań przy użyciu interfejsu API REST.
Odzyskiwanie na poziomie elementu przy użyciu interfejsu API REST
Za pomocą tej opcji przywracania można przywrócić poszczególne pliki lub foldery w oryginalnej lub alternatywnej lokalizacji.
POST https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/recoveryPoints/{recoveryPointId}/restore?api-version=2019-05-13
Wartości {containerName} i {protectedItemName} są ustawione tutaj , a identyfikator recoveryPointID to pole {name} punktu odzyskiwania wymienionego powyżej.
POST https://management.azure.com/Subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/azurefiles/providers/Microsoft.RecoveryServices/vaults/azurefilesvault/backupFabrics/Azure/protectionContainers/StorageContainer;storage;azurefiles;afsaccount/protectedItems/AzureFileShare%3Bazurefiles/recoveryPoints/932886657837421071/restore?api-version=2019-05-13'
Tworzenie treści żądania na potrzeby odzyskiwania na poziomie elementu przy użyciu interfejsu API REST
Aby wyzwolić przywracanie udziału plików platformy Azure, poniżej przedstawiono składniki treści żądania:
Nazwisko | Pisz | Opis |
---|---|---|
Właściwości | AzureFileShareRestoreRequest | Właściwości RestoreRequestResource |
Pełną listę definicji treści żądania i innych szczegółów można znaleźć w dokumencie interfejsu API REST przywracania wyzwalacza.
Przywracanie do oryginalnej lokalizacji odzyskiwania na poziomie elementu przy użyciu interfejsu API REST
Następująca treść żądania polega na przywróceniu pliku Restoretest.txt w udziale plików azurefiles na koncie magazynu afsaccount .
Tworzenie treści żądania
{
"properties":{
"objectType":"AzureFileShareRestoreRequest",
"copyOptions":"Overwrite",
"recoveryType":"OriginalLocation",
"restoreFileSpecs":[
{
"fileSpecType":"File",
"path":"RestoreTest.txt",
"targetFolderPath":null
}
],
"restoreRequestType":"ItemLevelRestore",
"sourceResourceId":"/subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/azurefiles/providers/Microsoft.storage/storageAccounts/afsaccount",
"targetDetails":null
}
}
Przywracanie do alternatywnej lokalizacji odzyskiwania na poziomie elementu przy użyciu interfejsu API REST
Poniższa treść żądania polega na przywróceniu pliku Restoretest.txt w udziale plików azurefiles na koncie magazynu afsaccount do folderu restoredata udziału plików azurefiles1 na koncie magazynu afaccount1.
Tworzenie treści żądania
{
"properties":{
"objectType":"AzureFileShareRestoreRequest",
"recoveryType":"AlternateLocation",
"sourceResourceId":"/subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/AzureFiles/providers/Microsoft.Storage/storageAccounts/afsaccount",
"copyOptions":"Overwrite",
"restoreRequestType":"ItemLevelRestore",
"restoreFileSpecs":[
{
"path":"Restore/RestoreTest.txt",
"fileSpecType":"File",
"targetFolderPath":"restoredata"
}
],
"targetDetails":{
"name":"azurefiles1",
"targetResourceId":"/subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/AzureFiles/providers/Microsoft.Storage/storageAccounts/afaccount1"
}
}
}
Odpowiedź powinna być obsługiwana w taki sam sposób, jak opisane powyżej w przypadku przywracania pełnego udziału.
Następne kroki
- Dowiedz się, jak zarządzać kopiami zapasowymi udziałów plików platformy Azure przy użyciu interfejsu API REST.