Dela via


Ta bort och återställa en blob med .NET

Den här artikeln visar hur du tar bort blobar med Azure Storage-klientbiblioteket för .NET. Om du har aktiverat mjuk borttagning för blobar kan du återställa borttagna blobar under kvarhållningsperioden.

Förutsättningar

  • Den här artikeln förutsätter att du redan har ett projekt konfigurerat för att fungera med Azure Blob Storage-klientbiblioteket för .NET. Mer information om hur du konfigurerar projektet, inklusive paketinstallation, tillägg using av direktiv och skapande av ett auktoriserat klientobjekt finns i Kom igång med Azure Blob Storage och .NET.
  • Auktoriseringsmekanismen måste ha behörighet att ta bort en blob eller återställa en mjuk borttagen blob. Mer information finns i auktoriseringsvägledningen för följande REST API-åtgärder:

Ta bort en blob

Om du vill ta bort en blob anropar du någon av följande metoder:

I följande exempel tas en blob bort:

public static async Task DeleteBlobAsync(BlobClient blob)
{
    await blob.DeleteAsync();
}

Om bloben har några associerade ögonblicksbilder måste du ta bort alla dess ögonblicksbilder för att ta bort bloben. I följande exempel tas en blob och dess ögonblicksbilder bort:

public static async Task DeleteBlobSnapshotsAsync(BlobClient blob)
{
    // Delete a blob and all of its snapshots
    await blob.DeleteAsync(snapshotsOption: DeleteSnapshotsOption.IncludeSnapshots);

    // Delete only the blob's snapshots
    //await blob.DeleteAsync(snapshotsOption: DeleteSnapshotsOption.OnlySnapshots);
}

Om du bara vill ta bort ögonblicksbilderna och inte själva bloben kan du skicka parametern DeleteSnapshotsOption.OnlySnapshots.

Återställa en borttagen blob

Mjuk borttagning av blobar skyddar en enskild blob, versioner, ögonblicksbilder och metadata från oavsiktliga borttagningar eller överskrivningar genom att spara borttagna data i systemet under en angiven tidsperiod. Under kvarhållningsperioden kan du återställa bloben till dess tillstånd när den togs bort. När kvarhållningsperioden har gått ut tas bloben bort permanent. Mer information om mjuk borttagning av blobar finns i Mjuk borttagning för blobar.

Du kan använda Azure Storage-klientbiblioteken för att återställa en mjuk borttagen blob eller ögonblicksbild.

Hur du återställer en mjuk borttagen blob beror på om ditt lagringskonto har blobversionshantering aktiverat eller inte. Mer information om blobversioner finns i Blob-versionshantering. Se något av följande avsnitt, beroende på ditt scenario:

Återställa mjukt borttagna objekt när versionshantering är inaktiverat

Om du vill återställa borttagna blobar när versionshantering inte är aktiverat anropar du någon av följande metoder:

Dessa metoder återställer mjukt borttagna blobar och eventuella borttagna ögonblicksbilder som är associerade med dem. Att anropa någon av dessa metoder för en blob som inte har tagits bort har ingen effekt. I följande exempel återställs alla mjukt borttagna blobar och deras ögonblicksbilder i en container:

public static async Task RestoreBlobsAsync(BlobContainerClient container)
{
    foreach (BlobItem blob in container.GetBlobs(BlobTraits.None, BlobStates.Deleted))
    {
        await container.GetBlockBlobClient(blob.Name).UndeleteAsync();
    }
}

Om du vill återställa en specifik ögonblicksbild med mjuk borttagning anropar du först Undelete eller UndeleteAsync på basbloben och kopierar sedan den önskade ögonblicksbilden över basbloben. I följande exempel återställs en blockblob till den senast genererade ögonblicksbilden:

public static async Task RestoreSnapshotsAsync(
    BlobContainerClient container,
    BlobClient blob)
{
    // Restore the deleted blob
    await blob.UndeleteAsync();

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

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

    // Restore the most recent snapshot by copying it to the blob
    await blob.StartCopyFromUriAsync(blobSnapshotUri.ToUri());
}

Återställa mjuk borttagna blobar när versionshantering är aktiverat

Om ett lagringskonto har konfigurerats för att aktivera blobversionshantering blir den aktuella versionen av bloben den tidigare versionen om du tar bort en blob. Om du vill återställa en mjuk borttagen blob när versionshantering är aktiverat kopierar du en tidigare version över basbloben. Du kan använda någon av följande metoder:

Följande kodexempel visar hur du hämtar den senaste versionen av en borttagen blob och återställer den senaste versionen genom att kopiera den till basbloben:

public static void RestoreBlobWithVersioning(
    BlobContainerClient container,
    BlobClient blob)
{
    // List blobs in this container that match prefix
    // Include versions in listing
    Pageable<BlobItem> blobItems = container.GetBlobs(
        BlobTraits.None,
        BlobStates.Version,
        prefix: blob.Name);

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

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

Resurser

Mer information om hur du tar bort blobar och återställer borttagna blobar med hjälp av Azure Blob Storage-klientbiblioteket för .NET finns i följande resurser.

REST API-åtgärder

Azure SDK för .NET innehåller bibliotek som bygger på Azure REST API, så att du kan interagera med REST API-åtgärder via välbekanta .NET-paradigm. Klientbiblioteksmetoderna för att ta bort blobar och återställa borttagna blobar använder följande REST API-åtgärder:

Kodexempel

Klientbiblioteksresurser

Se även