Compartilhar via


Excluir ou restaurar um blob com o .NET

Este artigo mostra como excluir blobs com a biblioteca de clientes do Armazenamento do Azure para .NET. Se você tiver habilitado a exclusão temporária para blobs, poderá restaurar blobs excluídos durante o período de retenção.

Pré-requisitos

  • Este artigo pressupõe que você já tenha um projeto configurado para trabalhar com a biblioteca de clientes do Armazenamento de Blobs do Azure para .NET. Para saber mais sobre como configurar seu projeto, incluindo a instalação de pacote, adição de using diretivas e criação e autorização do objeto do cliente, consulte Introdução ao Armazenamento do Microsoft Azure e .NET.
  • O mecanismo de autorização deve ter permissões para excluir um contêiner de blob ou restaurar um contêiner excluído temporariamente. Para saber mais, confira as diretrizes de autorização para as seguintes operações de API REST:

Excluir um blob

Para excluir um blob, chame um destes métodos:

O seguinte exemplo exclui um blob:

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

Se o blob tiver instantâneos associados, você deverá excluir todos os seus instantâneos para excluir o blob. O exemplo a seguir exclui um blob e seus instantâneos:

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);
}

Para excluir apenas os instantâneos e não o blob em si, passe o parâmetro DeleteSnapshotsOption.OnlySnapshots.

Restaurar um blob excluído

A exclusão reversível de blobs protege um blob individual e suas versões, instantâneos e metadados de exclusões ou substituições acidentais, mantendo os dados excluídos no sistema por um período de tempo especificado. Durante o período de retenção, você pode restaurar o blob para seu estado na exclusão. Depois que o período de retenção expirar, o blob será excluído permanentemente. Para obter mais informações sobre a exclusão reversível de blobs, consulte Exclusão reversível de blobs.

Você pode usar as bibliotecas clientes de armazenamento do Azure para restaurar um blob ou instantâneo excluído de maneira reversível.

A forma como você restaura um blob com exclusão temporária depende de sua conta de armazenamento ter ou não o controle de versão de blob habilitado. Para obter mais informações sobre o controle de versão de blob, consulte Controle de versão de blob. Confira uma das seguintes seções dependendo de seu cenário:

Restaurar objetos excluídos de maneira reversível quando o controle de versão estiver desabilitado

Para restaurar os blobs excluídos quando o controle de versão não estiver habilitado, chame um dos seguintes métodos:

Esses métodos restauram os blobs com exclusão temporária e os instantâneos excluídos associados a eles. A chamada de um desses métodos para um blob que não tenha sido excluído não tem nenhum efeito. O seguinte exemplo restaura todos os blobs com exclusão temporária e os instantâneos em um contêiner:

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

Para restaurar um instantâneo com exclusão temporária específico, primeiro, chame a operação Undelete ou UndeleteAsync no blob base e copie o instantâneo desejado sobre o blob base. O exemplo a seguir recupera um blob de blocos para o seu instantâneo gerado mais recentemente:

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());
}

Restaurar blobs excluídos de maneira reversível quando o controle de versão está habilitado

Se uma conta de armazenamento estiver configurada para habilitar o controle de versão do blob, excluir um blob fará com que a versão atual do blob se torne a versão anterior. Para restaurar um blob com exclusão temporária quando o controle de versão estiver habilitado, copie uma versão anterior sobre o blob base. Você pode usar um dos seguintes métodos:

O exemplo de código a seguir mostra como obter a versão mais recente de um blob excluído e restaura a versão mais recente copiando-a para o blob de base:

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());
}

Recursos

Para saber mais sobre como excluir blobs e restaurar blobs excluídos usando a biblioteca de clientes do Armazenamento de Blobs do Azure para .NET, confira os recursos a seguir.

Operações da API REST

O SDK do Azure para .NET contém bibliotecas que criam sobre a API REST do Azure, permitindo a interação com as operações de API REST por meio de paradigmas conhecidos do .NET. Os métodos da biblioteca de clientes para exclusão de blobs e restauração de blobs excluídos usam as seguintes operações da API REST:

Exemplos de código

Recursos da biblioteca de clientes

Confira também