Bagikan melalui


Menghapus dan memulihkan blob dengan .NET

Artikel ini memperlihatkan cara menghapus blob dengan pustaka klien Azure Storage untuk .NET, dan cara memulihkan blob yang dihapus sementara selama periode retensi.

Prasyarat

Siapkan 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 perintah dotnet add package. 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 dependency injection 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.

Otorisasi

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 Pulihkan Blob (REST API).

Hapus blob

Catatan

Saat penghapusan sementara blob diaktifkan untuk akun penyimpanan, Anda tidak dapat melakukan penghapusan permanen menggunakan metode pustaka klien. Dengan menggunakan metode dalam artikel ini, sebuah blob yang dihapus sementara, versi blob, atau rekam jepret akan tetap tersedia hingga periode retensi berakhir, setelah itu akan dihapus secara permanen. Untuk mempelajari selengkapnya tentang operasi REST API yang mendasar, lihat Menghapus Blob (REST API).

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 cuplikan dan bukan blob itu sendiri, Anda dapat menyertakan 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 snapshot yang terhapus sementara.

Cara Anda memulihkan blob yang dihapus sementara tergantung pada apakah akun penyimpanan Anda memiliki pengaturan versi blob diaktifkan 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 secara sementara ketika versi dinonaktifkan

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

Metode ini memulihkan blob yang dihapus secara 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 beserta 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 secara lunak, pertama-tama gunakan Undelete 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 versioning 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.

Sampel kode

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:

Sumber daya pustaka klien

Lihat juga

  • Artikel ini adalah bagian dari panduan pengembang Blob Storage untuk .NET. Untuk mempelajari lebih lanjut, lihat daftar lengkap artikel panduan pengembang di Membangun aplikasi .NET Anda.