Zarządzanie obiektami blob usuniętymi programowo i przywracanie ich

Funkcja nieumyślnego usuwania obiektów blob chroni pojedynczy obiekt blob oraz jego wersje, migawki i metadane przed przypadkowym usunięciem lub zastąpieniem przez utrzymywanie usuniętych danych w systemie przez określony czas. W trakcie okresu przechowywania możesz przywrócić stan obiektu blob w momencie usunięcia. Po wygaśnięciu okresu przechowywania obiekt blob jest trwale usuwany. Aby uzyskać więcej informacji o niechłodnych usunięciach obiektów blob, zobacz Niechyłne usuwanie obiektów blob.

Niechyłne usuwanie obiektów blob stanowi część kompleksowej strategii ochrony danych dla danych obiektów blob. Aby dowiedzieć się więcej o zaleceniach firmy Microsoft dotyczących ochrony danych, zobacz Omówienie ochrony danych.

Zarządzanie obiektami blob usuniętymi programowo

Zarządzanie obiektami blob "miękkiego usunięcia" za pomocą portalu Azure Portal

Za pomocą portalu Azure Portal możesz wyświetlać i przywracać "miękkie" usunięte obiekty blob i migawki.

Wyświetlanie usuniętych obiektów blob

Obiekty blob są domyślnie niewidoczne w portalu Azure Portal. Aby wyświetlić obiekty blob w trybie "miękkiego usunięcia", przejdź do strony Omówienie dla kontenera i przełącz ustawienie Pokaż usunięte obiekty blob. Obiekty blob typu "miękkie usunięcie" są wyświetlane ze stanem Usunięte.

Zrzut ekranu przedstawiający sposób wyświetlania listy obiektów blob usuniętych programowo w portalu Azure Portal

Następnie wybierz usunięty obiekt blob z listy obiektów blob, aby wyświetlić jego właściwości. Na karcie Omówienie zwróć uwagę, że stan obiektu blob ma ustawioną wartość Usunięte. Portal wyświetla również liczbę dni do trwałego usunięcia obiektu blob.

Zrzut ekranu przedstawiający właściwości obiektu blob

Wyświetlanie usuniętych migawek

Usunięcie obiektu blob powoduje również usunięcie wszystkich migawek skojarzonych z tym obiektem blob. Jeśli obiekt blob "miękkiego usunięcia" zawiera migawki, usunięte migawki mogą być również wyświetlane w portalu. Wyświetl właściwości obiektu blob po "miękkiej usunięciu", a następnie przejdź do karty Migawki i włącz przełącznik Pokaż usunięte migawki.

Zrzut ekranu przedstawiający

Przywracanie obiektów usuniętych programowo, gdy jest wyłączona wersja

Aby przywrócić obiekt blob w trybie "miękkiego usunięcia" w portalu Azure, gdy nie włączono obsługi wersji obiektów blob, najpierw wyświetl właściwości obiektu blob, a następnie wybierz przycisk Przywracanie na karcie Omówienie. Przywracanie obiektu blob przywraca również wszystkie migawki, które zostały usunięte podczas okresu przechowywania "miękkiego usunięcia".

Zrzut ekranu przedstawiający sposób przywracania obiektu blob

Aby podbudować migawkę "miękkiego usunięcia" do obiektu blob podstawowego, najpierw upewnij się, że zostały przywrócone migawki "miękkiego usunięcia". Wybierz przycisk Cofń przywracanie, aby przywrócić migawki obiektu blob "miękkiego usunięcia", nawet jeśli sam obiekt blob podstawowy nie został "miękkiego usunięcia". Następnie wybierz migawkę, aby podrównać wartość, i użyj przycisku Podaj migawkę, aby zastąpić podstawowy obiekt blob zawartością migawki.

Zrzut ekranu przedstawiający sposób promowania migawki do obiektu blob podstawowego

Przywracanie obiektów blob w trybie "miękkiego usunięcia", gdy jest włączone versioning

Aby przywrócić obiekt blob w trybie "miękkiego usunięcia" w portalu Azure, gdy jest włączone sporządzanie wersji, wybierz obiekt blob "miękkie usunięcie", aby wyświetlić jego właściwości, a następnie wybierz kartę Wersje. Wybierz wersję, której poziom chcesz zmienić na wersję bieżącą, a następnie wybierz pozycję Udostępnij bieżącą wersję.

Zrzut ekranu przedstawiający sposób promowania wersji w celu przywrócenia obiektu blob w portalu Azure Portal

Aby przywrócić usunięte wersje lub migawki, gdy jest włączone tworzenie wersji, wyświetl właściwości obiektu blob, a następnie wybierz przycisk Cofń delegowanie na karcie Omówienie.

Uwaga

Gdy jest włączone tworzenie wersji, wybranie przycisku Cofń przywracanie w usuniętym obiekcie blob powoduje przywrócenie wszystkich wersji lub migawek "miękkiego usunięcia", ale nie powoduje przywrócenia podstawowego obiektu blob. Aby przywrócić obiekt blob podstawowy, musisz podbudować poprzednią wersję.

Zarządzanie obiektami blob usuniętymi programowo za pomocą kodu

Możesz użyć bibliotek klienta usługi Azure Storage, aby przywrócić obiekt blob lub migawkę "miękkiego usunięcia". W poniższych przykładach popisano sposób korzystania z biblioteki klienta .NET.

Przywracanie obiektów usuniętych programowo, gdy jest wyłączona wersja

Aby przywrócić usunięte obiekty blob, gdy nie włączono obsługi wersji, wywołaj operację Przywróć obiekt blob przywracanie dla tych obiektów blob. Operacja Undelete Blob przywraca obiekty blob w trybie "miękkiego usunięcia" i wszelkie usunięte migawki skojarzone z tymi obiektami blob.

Wywoływanie obiektu blob Undelete w obiekcie blob, który nie został usunięty, nie ma żadnego efektu. Poniższy przykład wywołuje obiekt Blob Przywracanie dla wszystkich obiektów blob w kontenerze i przywraca obiekty blob "miękkiego usunięcia" i ich migawki:


foreach (BlobItem blob in container.GetBlobs(BlobTraits.None, BlobStates.Deleted))
{
    await container.GetBlockBlobClient(blob.Name).UndeleteAsync();
}

Aby przywrócić określoną migawkę w trybie "miękkiego usunięcia", najpierw wywołaj operację Przywróć obiekt blob Przywracanie dla obiektu blob podstawowego, a następnie skopiuj żądaną migawkę nad obiektem blob bazowym. W poniższym przykładzie przywrócono obiekt blob bloku do ostatnio wygenerowanej migawki:

// Restore the deleted blob.
await blockBlob.UndeleteAsync();

// List blobs in this container that match prefix.
// Include snapshots in listing.
Pageable<BlobItem> blobItems = container.GetBlobs
                (BlobTraits.None, BlobStates.Snapshots, prefix: blockBlob.Name);

// Get the URI for the most recent snapshot.
BlobUriBuilder blobSnapshotUri = new BlobUriBuilder(blockBlob.Uri)
{
    Snapshot = blobItems
               .OrderByDescending(snapshot => snapshot.Snapshot)
               .ElementAtOrDefault(1)?.Snapshot
};

// Restore the most recent snapshot by copying it to the blob.
blockBlob.StartCopyFromUri(blobSnapshotUri.ToUri());

Przywracanie obiektów blob w trybie "miękkiego usunięcia", gdy jest włączone versioning

Aby przywrócić obiekt blob w trybie "miękkiego usunięcia", gdy jest włączone sporządzanie wersji, skopiuj poprzednią wersję nad obiektem blob bazowym z operacją kopiowania obiektu blob lub obiektu blob kopiowania z adresu URL.

// List blobs in this container that match prefix.
// Include versions in listing.
Pageable<BlobItem> blobItems = container.GetBlobs
                (BlobTraits.None, BlobStates.Version, prefix: blockBlob.Name);

// Get the URI for the most recent version.
BlobUriBuilder blobVersionUri = new BlobUriBuilder(blockBlob.Uri)
{
    VersionId = blobItems
                .OrderByDescending(version => version.VersionId)
                .ElementAtOrDefault(1)?.VersionId
};

// Restore the most recently generated version by copying it to the base blob.
blockBlob.StartCopyFromUri(blobVersionUri.ToUri());

Zarządzanie obiektami blob i katalogami "miękkiego usunięcia" (hierarchiczna przestrzeń nazw)

Możesz przywrócić niechcące usunięte obiekty blob i katalogi na kontach, które mają hierarchiczną przestrzeń nazw.

Zarządzanie obiektami blob "miękkiego usunięcia" za pomocą portalu Azure Portal

Za pomocą portalu Azure Portal możesz wyświetlać i przywracać obiekty blob i katalogi "miękkie".

Wyświetlanie usuniętych obiektów blob i katalogów

Obiekty blob lub katalogi są domyślnie niewidoczne w portalu Azure Portal. Aby wyświetlić obiekty blob i katalogi w trybie "miękkiego usunięcia", przejdź do strony Przegląd kontenera i przełącz ustawienie Pokaż usunięte obiekty blob. Obiekty blob i katalogi "miękkie" są wyświetlane ze stanem Usunięte. Na poniższej ilustracji przedstawiono katalog "miękkie usunięcie".

Zrzut ekranu przedstawiający sposób wyświetlania listy obiektów blob typu

Uwaga

Jeśli zmienisz nazwę katalogu zawierającego elementy "miękkiego usunięcia" (podkategorie i obiekty blob), te elementy niechcące usunięte zostaną odłączone od katalogu, więc nie będą widoczne w portalu Azure Portal po przełączeniu ustawienia Pokaż usunięte obiekty blob. Jeśli chcesz je wyświetlić w portalu Azure Portal, musisz przywrócić pierwotną nazwę katalogu lub utworzyć osobny katalog, w którym będzie używana oryginalna nazwa katalogu.

Następnie wybierz usunięty katalog lub obiekt blob z listy i wyświetl jego właściwości. Na karcie Omówienie zwróć uwagę, że stan ma wartość Usunięte. Portal wyświetla również liczbę dni do trwałego usunięcia obiektu blob.

Zrzut ekranu przedstawiający właściwości obiektu blob

Przywracanie obiektów blob i katalogów w celu "miękkiego usunięcia"

Aby przywrócić obiekt blob lub katalog "miękkiego usunięcia" w portalu Azure Portal, najpierw wyświetl właściwości obiektu blob lub katalogu, a następnie wybierz przycisk Przywracanie na karcie Omówienie. Na poniższej ilustracji przedstawiono przycisk Przytłacz w katalogu "miękkiego usunięcia".

Zrzut ekranu przedstawiający sposób przywracania obiektu blob

Przywracanie "miękkiego usunięcia" obiektów blob i katalogów przy użyciu programu PowerShell

Ważne

Ta sekcja dotyczy tylko kont, które mają hierarchiczną przestrzeń nazw.

  1. Upewnij się, że masz zainstalowany moduł Az.Storage Preview. Aby uzyskać więcej informacji, zobacz Włączanie funkcji "miękkiego usuwania obiektów blob" za pośrednictwem programu PowerShell.

  2. Uzyskaj autoryzację konta magazynu przy użyciu klucza konta magazynu, parametrów połączenia lub Azure Active Directory (Azure AD). Aby uzyskać więcej informacji, Połączenie się z kontem.

    Poniższy przykład uzyskuje autoryzację przy użyciu klucza konta magazynu.

    $ctx = New-AzStorageContext -StorageAccountName '<storage-account-name>' -StorageAccountKey '<storage-account-key>'
    
  3. Aby przywrócić niechybnie usunięty element, użyj Restore-AzDataLakeGen2DeletedItem tego polecenia.

    $filesystemName = "my-file-system"
    $dirName="my-directory"
    $deletedItems = Get-AzDataLakeGen2DeletedItem -Context $ctx -FileSystem $filesystemName -Path $dirName
    $deletedItems | Restore-AzDataLakeGen2DeletedItem
    

    Jeśli zmienisz nazwę katalogu zawierającego elementy "miękkiego usunięcia", zostaną one odłączone od katalogu. Jeśli chcesz przywrócić te elementy, musisz przywrócić pierwotną nazwę katalogu lub utworzyć osobny katalog z oryginalną nazwą katalogu. W przeciwnym razie przy próbie przywrócenia tych "miękkiego usunięcia" zostanie wyświetlony komunikat o błędzie.

Przywracanie niedyseksowych usuniętych obiektów blob i katalogów przy użyciu funkcji Azure CLI

Ważne

Ta sekcja dotyczy tylko kont, które mają hierarchiczną przestrzeń nazw.

  1. Upewnij się, że masz storage-preview zainstalowane rozszerzenie. Aby uzyskać więcej informacji, zobacz Włączanie funkcji "miękkiego usuwania obiektów blob" przy użyciu programu PowerShell.

  2. Uzyskiwanie listy elementów usuniętych.

    $filesystemName = "my-file-system"
    az storage fs list-deleted-path -f $filesystemName --auth-mode login
    
  3. Aby przywrócić element, użyj tego az storage fs undelete-path polecenia.

    $dirName="my-directory"
    az storage fs undelete-path -f $filesystemName --deleted-path-name $dirName -deletion-id "<deletionId>" --auth-mode login
    

    Jeśli zmienisz nazwę katalogu zawierającego elementy "miękkiego usunięcia", zostaną one odłączone od katalogu. Jeśli chcesz przywrócić te elementy, musisz przywrócić pierwotną nazwę katalogu lub utworzyć osobny katalog z oryginalną nazwą katalogu. W przeciwnym razie przy próbie przywrócenia tych "miękkiego usunięcia" zostanie wyświetlony komunikat o błędzie.

Przywracanie niefędnych usuniętych obiektów blob i katalogów przy użyciu programu .NET

Ważne

Ta sekcja dotyczy tylko kont, które mają hierarchiczną przestrzeń nazw.

  1. Otwórz wiersz polecenia i zmień katalog ( cd ) w folderze projektu Na przykład:

    cd myProject
    
  2. Zainstaluj Azure.Storage.Files.DataLake -v 12.7.0 wersję usługi Azure.Storage.Files.DataLake -v 12.7.0 NuGet pakietu przy użyciu dotnet add package tego polecenia.

    dotnet add package Azure.Storage.Files.DataLake -v -v 12.7.0 -s https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-net/nuget/v3/index.json
    
  3. Następnie dodaj te instrukcje u góry pliku kodu.

    using Azure;
    using Azure.Storage;
    using Azure.Storage.Files.DataLake;
    using Azure.Storage.Files.DataLake.Models;
    using NUnit.Framework;
    using System;
    using System.Collections.Generic;
    using System.Threading.Tasks;
    
  4. Poniższy kod powoduje usunięcie katalogu, a następnie przywrócenie "miękkiego usunięcia katalogu".

    Ta metoda zakłada, że utworzono wystąpienie DataLakeServiceClient. Aby dowiedzieć się, jak utworzyć wystąpienie usługi DataLakeServiceClient, Połączenie się z kontem.

       public void RestoreDirectory(DataLakeServiceClient serviceClient)
       {
           DataLakeFileSystemClient fileSystemClient =
              serviceClient.GetFileSystemClient("my-container");
    
           DataLakeDirectoryClient directory =
               fileSystem.GetDirectoryClient("my-directory");
    
           // Delete the Directory
           await directory.DeleteAsync();
    
           // List Deleted Paths
           List<PathHierarchyDeletedItem> deletedItems = new List<PathHierarchyDeletedItem>();
           await foreach (PathHierarchyDeletedItem deletedItem in fileSystemClient.GetDeletedPathsAsync())
           {
             deletedItems.Add(deletedItem);
           }
    
           Assert.AreEqual(1, deletedItems.Count);
           Assert.AreEqual("my-directory", deletedItems[0].Path.Name);
           Assert.IsTrue(deletedItems[0].IsPath);
    
           // Restore deleted directory.
           Response<DataLakePathClient> restoreResponse = await fileSystemClient.RestorePathAsync(
           deletedItems[0].Path.Name,
           deletedItems[0].Path.DeletionId);
    
       }
    
    

    Jeśli zmienisz nazwę katalogu zawierającego elementy "miękkiego usunięcia", zostaną one odłączone od katalogu. Jeśli chcesz przywrócić te elementy, musisz przywrócić pierwotną nazwę katalogu lub utworzyć osobny katalog z oryginalną nazwą katalogu. W przeciwnym razie przy próbie przywrócenia tych "miękkiego usunięcia" zostanie wyświetlony komunikat o błędzie.

Przywracanie "miękkiego usunięcia" obiektów blob i katalogów przy użyciu języka Java

Ważne

Ta sekcja dotyczy tylko kont, które mają hierarchiczną przestrzeń nazw.

  1. Aby rozpocząć, otwórz pom.xml w edytorze tekstów. Dodaj następujący element zależności do grupy zależności.

    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-storage-file-datalake</artifactId>
      <version>12.6.0</version>
    </dependency>
    
  2. Następnie dodaj te instrukcje importu do pliku kodowego.

    Put imports here
    
  3. Poniższy fragment przywraca plik o nazwie "miękkie my-file usunięcie".

    Ta metoda zakłada, że utworzono wystąpienie DataLakeServiceClient. Aby dowiedzieć się, jak utworzyć wystąpienie usługi DataLakeServiceClient, Połączenie się z kontem.

    
    public void RestoreFile(DataLakeServiceClient serviceClient){
    
        DataLakeFileSystemClient fileSystemClient =
            serviceClient.getFileSystemClient("my-container");
    
        DataLakeFileClient fileClient =
            fileSystemClient.getFileClient("my-file");
    
        String deletionId = null;
    
        for (PathDeletedItem item : fileSystemClient.listDeletedPaths()) {
    
            if (item.getName().equals(fileClient.getFilePath())) {
               deletionId = item.getDeletionId();
            }
        }
    
        fileSystemClient.restorePath(fileClient.getFilePath(), deletionId);
     }
    
    

    Jeśli zmienisz nazwę katalogu zawierającego elementy "miękkiego usunięcia", zostaną one odłączone od katalogu. Jeśli chcesz przywrócić te elementy, musisz przywrócić pierwotną nazwę katalogu lub utworzyć osobny katalog z oryginalną nazwą katalogu. W przeciwnym razie przy próbie przywrócenia tych "miękkiego usunięcia" zostanie wyświetlony komunikat o błędzie.

Przywracanie łagodnego usunięcia obiektów blob i katalogów przy użyciu języka Python

Ważne

Ta sekcja dotyczy tylko kont, które mają hierarchiczną przestrzeń nazw.

  1. Zainstaluj wersję 12.4.0 lub nowszą wersję biblioteki klienta usługi Azure Data Lake Storage dla pythona przy użyciu platformy 12.4.0 To polecenie instaluje najnowszą wersję biblioteki klienta usługi Azure Data Lake Storage python.

    pip install azure-storage-file-datalake
    
  2. Dodaj te instrukcje importowania u góry pliku kodu.

    import os, uuid, sys
    from azure.storage.filedatalake import DataLakeServiceClient
    from azure.storage.filedatalake import FileSystemClient
    
  3. Poniższy kod powoduje usunięcie katalogu, a następnie przywrócenie "miękkiego usunięcia katalogu".

    Poniższy przykład kodu zawiera obiekt o nazwie service_clientservice_client Aby zobaczyć przykłady tworzenia wystąpienia usługi DataLakeServiceClient, Połączenie się z kontem.

    def restoreDirectory():
    
        try:
            global file_system_client
    
            file_system_client = service_client.create_file_system(file_system="my-file-system")
    
            directory_path = 'my-directory'
            directory_client = file_system_client.create_directory(directory_path)
            resp = directory_client.delete_directory()
    
            restored_directory_client = file_system_client.undelete_path(directory_client, resp['deletion_id'])
            props = restored_directory_client.get_directory_properties()
    
            print(props)
    
        except Exception as e:
            print(e)
    
    

    Jeśli zmienisz nazwę katalogu zawierającego elementy "miękkiego usunięcia", zostaną one odłączone od katalogu. Jeśli chcesz przywrócić te elementy, musisz przywrócić pierwotną nazwę katalogu lub utworzyć osobny katalog z oryginalną nazwą katalogu. W przeciwnym razie przy próbie przywrócenia tych "miękkiego usunięcia" zostanie wyświetlony komunikat o błędzie.

Następne kroki