Bagikan melalui


Menghapus dan memulihkan blob dengan .NET

Artikel ini menunjukkan cara menghapus blob dengan pustaka klien Azure Storage untuk .NET. Jika Anda telah mengaktifkan penghapusan sementara untuk blob, Anda dapat memulihkan blob yang dihapus selama periode retensi.

Prasyarat

Menyiapkan lingkungan Anda

Jika Anda tidak memiliki proyek yang sudah ada, bagian ini menunjukkan kepada Anda cara menyiapkan proyek untuk bekerja dengan pustaka klien Azure Blob Storage untuk .NET. Langkah-langkahnya termasuk penginstalan paket, menambahkan arahan using , dan membuat objek klien resmi. Untuk detailnya, lihat Mulai menggunakan Azure Blob Storage dan .NET.

Memasang paket

Dari direktori proyek Anda, instal paket untuk pustaka klien Azure Blob Storage dan Azure Identity menggunakan dotnet add package perintah . Paket Azure.Identity diperlukan untuk koneksi tanpa kata sandi ke layanan Azure.

dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity

Tambahkan direktif using

Tambahkan arahan ini using ke bagian atas file kode Anda:

using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;

Beberapa contoh kode dalam artikel ini mungkin memerlukan arahan tambahan using .

Membuat objek klien

Untuk menyambungkan aplikasi ke Blob Storage, buat instans BlobServiceClient. Contoh berikut menunjukkan cara membuat objek klien menggunakan DefaultAzureCredential untuk otorisasi:

public BlobServiceClient GetBlobServiceClient(string accountName)
{
    BlobServiceClient client = new(
        new Uri($"https://{accountName}.blob.core.windows.net"),
        new DefaultAzureCredential());

    return client;
}

Anda dapat mendaftarkan klien layanan untuk injeksi dependensi di aplikasi .NET.

Anda juga dapat membuat objek klien untuk kontainer atau blob tertentu. Untuk mempelajari selengkapnya tentang membuat dan mengelola objek klien, lihat Membuat dan mengelola objek klien yang berinteraksi dengan sumber daya data.

Authorization

Mekanisme otorisasi harus memiliki izin yang diperlukan untuk menghapus blob, atau untuk memulihkan blob yang dihapus sementara. Untuk otorisasi dengan MICROSOFT Entra ID (disarankan), Anda memerlukan peran bawaan Azure RBAC Kontributor Data Blob Penyimpanan atau yang lebih tinggi. Untuk mempelajari lebih lanjut, lihat panduan otorisasi untuk Hapus Blob (REST API) dan Batalkan Penghapusan Blob (REST API).

Hapus blob

Untuk menghapus blob, panggil salah satu metode berikut:

Contoh berikut menghapus blob:

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

Jika blob memiliki rekam jepret terkait, Anda harus menghapus semua rekam jepretnya untuk menghapus blob. Contoh berikut menghapus blob dan rekam jepretnya:

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

Untuk menghapus hanya rekam jepret dan bukan blob itu sendiri, Anda dapat meneruskan parameter DeleteSnapshotsOption.OnlySnapshots.

Memulihkan blob yang dihapus

Penghapusan sementara blob melindungi blob individu dan versi, rekam jepret, serta metadatanya dari penghapusan atau penimpaan yang tidak disengaja dengan mempertahankan data yang dihapus dalam sistem selama jangka waktu tertentu. Selama periode retensi, Anda dapat memulihkan blob ke statusnya saat penghapusan. Setelah periode retensi kedaluwarsa, blob dihapus secara permanen. Untuk informasi selengkapnya tentang penghapusan sementara blob, lihat Penghapusan sementara untuk blob.

Anda dapat menggunakan pustaka klien Azure Storage untuk memulihkan blob atau rekam jepret yang dihapus untuk sementara.

Cara Anda memulihkan blob yang dihapus sementara tergantung pada apakah akun penyimpanan Anda mengaktifkan penerapan versi blob atau tidak. Untuk informasi selengkapnya tentang penerapan versi blob, lihat Penerapan versi blob. Lihat salah satu bagian berikut, bergantung pada skenario Anda:

Memulihkan objek yang dihapus untuk sementara saat penerapan versi dinonaktifkan

Untuk memulihkan blob yang dihapus saat penerapan versi tidak diaktifkan, panggil salah satu metode berikut:

Metode ini memulihkan blob yang dihapus sementara dan semua snapshot yang dihapus terkait dengannya. Memanggil salah satu dari metode ini untuk blob yang belum dihapus tidak akan berpengaruh. Contoh berikut memulihkan semua blob yang dihapus sementara dan snapshot-nya dalam sebuah kontainer:

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

Untuk memulihkan snapshot yang dihapus sementara, pertama-tama panggil Batalkan penghapusan atau UndeleteAsync pada blob dasar, lalu salin snapshot yang diinginkan ke blob dasar. Contoh berikut memulihkan blob blok ke rekam jepret yang paling baru dihasilkan:

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

Memulihkan blob yang dihapus untuk sementara saat penerapan versi diaktifkan

Jika akun penyimpanan dikonfigurasi untuk mengaktifkan penerapan versi blob, menghapus blob menyebabkan versi blob saat ini menjadi versi sebelumnya. Untuk memulihkan blob yang dihapus sementara saat penerapan versi diaktifkan, salin versi sebelumnya ke blob dasar. Anda dapat menggunakan salah satu dari metode berikut:

Contoh kode berikut menunjukkan cara mendapatkan versi terbaru blob yang dihapus, dan memulihkan versi terbaru dengan menyalinnya ke blob dasar:

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

Sumber

Untuk mempelajari selengkapnya tentang cara menghapus blob dan memulihkan blob yang dihapus menggunakan pustaka klien Azure Blob Storage untuk .NET, lihat sumber daya berikut ini.

Operasi REST API

Azure SDK untuk .NET berisi pustaka yang dibangun di atas Azure REST API, memungkinkan Anda berinteraksi dengan operasi REST API melalui paradigma .NET yang sudah dikenal. Metode pustaka klien untuk menghapus blob dan memulihkan blob yang dihapus menggunakan operasi REST API berikut:

Sampel kode

Sumber daya pustaka klien

Lihat juga