Een blob verwijderen en herstellen met .NET
In dit artikel wordt beschreven hoe u blobs verwijdert met de Azure Storage-clientbibliotheek voor .NET. Als u voorlopig verwijderen voor blobs hebt ingeschakeld , kunt u verwijderde blobs herstellen tijdens de bewaarperiode.
Vereisten
- In dit artikel wordt ervan uitgegaan dat u al een project hebt ingesteld voor gebruik met de Azure Blob Storage-clientbibliotheek voor .NET. Zie Aan de slag met Azure Blob Storage en .NET voor meer informatie over het instellen van uw project, inclusief pakketinstallatie, het toevoegen van
using
instructies en het maken van een geautoriseerd clientobject. - Het autorisatiemechanisme moet machtigingen hebben om een blob te verwijderen of om een voorlopig verwijderde blob te herstellen. Zie de autorisatierichtlijnen voor de volgende REST API-bewerkingen voor meer informatie:
Een blob verwijderen
Als u een blob wilt verwijderen, roept u een van de volgende methoden aan:
In het volgende voorbeeld wordt een blob verwijderd:
public static async Task DeleteBlobAsync(BlobClient blob)
{
await blob.DeleteAsync();
}
Als de blob gekoppelde momentopnamen heeft, moet u alle momentopnamen verwijderen om de blob te verwijderen. In het volgende voorbeeld worden een blob en de bijbehorende momentopnamen verwijderd:
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);
}
Als u alleen de momentopnamen en niet de blob zelf wilt verwijderen, kunt u de parameter DeleteSnapshotsOption.OnlySnapshots
doorgeven.
Een verwijderde blob herstellen
Met voorlopig verwijderen van blobs wordt een afzonderlijke blob en zijn versies, momentopnamen en metagegevens beschermd tegen onbedoeld verwijderen of overschrijven door de verwijderde gegevens gedurende een opgegeven periode in het systeem te behouden. Tijdens de retentieperiode kunt u de blob herstellen naar de status die deze had bij het verwijderen. Nadat de retentieperiode is verlopen, wordt de blob definitief verwijderd. Zie Voorlopig verwijderen voor blobs voor meer informatie over voorlopig verwijderen van blobs.
U kunt de Azure Storage-clientbibliotheken gebruiken om een voorlopig verwijderde blob of momentopname te herstellen.
Hoe u een voorlopig verwijderde blob herstelt, is afhankelijk van of voor uw opslagaccount blobversiebeheer is ingeschakeld. Zie Blob-versiebeheer voor meer informatie over blobversiebeheer. Bekijk een van de volgende secties, afhankelijk van uw scenario:
Voorlopig verwijderde objecten herstellen wanneer versiebeheer is uitgeschakeld
Als u verwijderde blobs wilt herstellen wanneer versiebeheer niet is ingeschakeld, roept u een van de volgende methoden aan:
Met deze methoden herstelt u voorlopig verwijderde blobs en eventuele verwijderde momentopnamen die eraan zijn gekoppeld. Het aanroepen van een van deze methoden voor een blob die niet is verwijderd, heeft geen effect. In het volgende voorbeeld worden alle voorlopig verwijderde blobs en de bijbehorende momentopnamen in een container hersteld:
public static async Task RestoreBlobsAsync(BlobContainerClient container)
{
foreach (BlobItem blob in container.GetBlobs(BlobTraits.None, BlobStates.Deleted))
{
await container.GetBlockBlobClient(blob.Name).UndeleteAsync();
}
}
Als u een specifieke voorlopig verwijderde momentopname wilt herstellen, roept u eerst undelete of UndeleteAsync aan op de basis-blob en kopieert u vervolgens de gewenste momentopname over de basis-blob. In het volgende voorbeeld wordt een blok-blob hersteld naar de laatst gegenereerde momentopname:
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());
}
Voorlopig verwijderde blobs herstellen wanneer versiebeheer is ingeschakeld
Als een opslagaccount is geconfigureerd om blobversiebeheer in te schakelen, zorgt het verwijderen van een blob ervoor dat de huidige versie van de blob de vorige versie wordt. Als u een voorlopig verwijderde blob wilt herstellen wanneer versiebeheer is ingeschakeld, kopieert u een vorige versie over de basis-blob. U kunt een van de volgende methoden gebruiken:
In het volgende codevoorbeeld ziet u hoe u de nieuwste versie van een verwijderde blob kunt ophalen en de nieuwste versie kunt herstellen door deze naar de basis-blob te kopiƫren:
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());
}
Resources
Zie de volgende resources voor meer informatie over het verwijderen van blobs en het herstellen van verwijderde blobs met behulp van de Azure Blob Storage-clientbibliotheek voor .NET.
REST API-bewerkingen
De Azure SDK voor .NET bevat bibliotheken die zijn gebaseerd op de Azure REST API, zodat u kunt communiceren met REST API-bewerkingen via bekende .NET-paradigma's. De clientbibliotheekmethoden voor het verwijderen van blobs en het herstellen van verwijderde blobs gebruiken de volgende REST API-bewerkingen: