Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penyimpanan blob mendukung blob blok, blob penambahan, dan blob halaman. Block blob dioptimalkan untuk mengunggah data dalam jumlah besar secara efisien. Blob blok sangat cocok untuk menyimpan gambar, dokumen, dan jenis data lain yang tidak dikenai operasi baca dan tulis secara acak. Artikel ini menjelaskan cara bekerja dengan block blob.
Prasyarat
Untuk mengakses Azure Storage, Anda perlu berlangganan Azure. Jika Anda belum berlangganan, buat akun gratis sebelum memulai.
Semua akses ke Azure Storage dilakukan melalui akun penyimpanan. Untuk mulai cepat ini, Anda dapat membuat akun penyimpanan menggunakan portal Azure, Azure PowerShell, atau Azure CLI. Untuk bantuan membuat akun penyimpanan, lihat Membuat akun penyimpanan.
Persiapkan lingkungan Anda untuk Azure CLI
Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai menggunakan Azure Cloud Shell.
Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, instal Azure CLI. Jika Anda menjalankan Windows atau macOS, pertimbangkan untuk menjalankan Azure CLI dalam kontainer Docker. Untuk informasi lebih lanjut, lihat Cara menjalankan Azure CLI di kontainer Docker.
Jika Anda menggunakan instalasi lokal, masuk ke Azure CLI dengan menggunakan perintah login az. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Mengautentikasi ke Azure menggunakan Azure CLI.
Saat Anda diminta, instal ekstensi Azure CLI pada penggunaan pertama. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan dan mengelola ekstensi dengan Azure CLI.
Jalankan versi az untuk menemukan versi dan pustaka dependen yang diinstal. Untuk meningkatkan ke versi terbaru, jalankan az upgrade.
- Artikel ini memerlukan Azure CLI versi 2.0.46 atau versi terbaru. Jika menggunakan Azure Cloud Shell, versi terbaru sudah terinstal.
Izinkan akses ke penyimpanan Blob
Anda dapat mengotorisasi akses ke penyimpanan Blob dari Azure CLI baik dengan kredensial Microsoft Entra atau dengan menggunakan kunci akses akun penyimpanan. Menggunakan kredensial Microsoft Entra disarankan, dan contoh artikel ini menggunakan ID Microsoft Entra secara eksklusif.
Perintah Azure CLI untuk operasi data terhadap penyimpanan Blob mendukung --auth-mode parameter, yang memungkinkan Anda menentukan cara memberi izin operasi tertentu. Atur --auth-mode parameter untuk masuk untuk mengotorisasi dengan kredensial Microsoft Entra. Hanya operasi data penyimpanan Blob yang mendukung --auth-mode parameter. Operasi manajemen, seperti membuat grup sumber daya atau akun penyimpanan, secara otomatis menggunakan kredensial Microsoft Entra untuk otorisasi. Untuk informasi selengkapnya, lihat Memilih cara mengizinkan akses ke data blob dengan Azure CLI.
Jalankan perintah login untuk membuka browser dan menyambungkan ke langganan Azure Anda.
az login
Membuat kontainer
Semua data blob disimpan dalam kontainer, jadi Anda akan membutuhkan setidaknya satu kontainer sumber daya sebelum dapat mengunggah data. Jika diperlukan, gunakan contoh berikut ini untuk membuat kontainer penyimpanan. Untuk informasi selengkapnya, lihat Mengelola kontainer blob menggunakan Azure CLI.
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container"
# Create a container object
az storage container create \
--name $containerName \
--account-name $storageAccount
--auth-mode login
Ketika menggunakan contoh yang terdapat dalam artikel ini, Anda perlu mengganti nilai tempat penampung dalam tanda kurung siku dengan nilai Anda sendiri. Untuk informasi selengkapnya tentang proses masuk ke Azure dengan Azure CLI, lihat Masuk dengan Azure CLI.
Unggah beberapa blob
Azure CLI menawarkan perintah yang menjalankan operasi pada satu sumber daya atau beberapa sumber daya, bergantung pada persyaratan Anda.
Untuk mengunggah file ke blob blok, berikan nilai parameter yang diperlukan ke perintah az storage blob upload. Sediakan nama file dan jalur sumber dengan parameter --file, dan nama tujuan kontainer dengan parameter --container-name. Anda juga harus menyediakan parameter --account-name. Perintah ini membuat blob baru atau menggantikan blob yang awal jika sudah ada.
Anda dapat menggunakan perintah az storage blob upload-batch untuk mengunggah beberapa blob secara rekursif ke kontainer penyimpanan. Anda dapat menggunakan pencocokan pola nama file Unix dan menentukan rentang file untuk diunggah dengan parameter --pattern. Pola yang didukung adalah *, ?, [seq], dan [!seq]. Untuk mempelajari selengkapnya, lihat dokumentasi Python terkait pencocokan pola nama file Unix.
Dalam contoh berikut, operasi pertama menggunakan perintah az storage blob upload untuk mengunggah satu file yang memiliki nama. Kontainer penyimpanan tujuan dan file sumber ditentukan dengan parameter --file dan parameter --container-name.
Operasi kedua menunjukkan penggunaan perintah az storage blob upload-batch untuk mengunggah beberapa file. Parameter --if-modified-since memastikan bahwa hanya file yang dimodifikasi dalam tujuh hari terakhir yang akan diunggah. Nilai yang disediakan oleh parameter ini harus disertakan dalam format UTC.
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container"
lastModified=$(date +%Y:%m:%d -d "7 days ago")
path="C:\\temp\\"
filename="demo-file.txt"
imageFiles="*.png"
file="$path$filename"
#Upload a single named file
az storage blob upload \
--file $file \
--container-name $containerName \
--account-name $storageAccount \
--auth-mode login
#Upload multiple image files recursively
az storage blob upload-batch \
--destination $containerName \
--source $path \
--pattern *.png \
--account-name $storageAccount \
--auth-mode login \
--if-modified-since $lastModified
Daftar blob
Secara default, perintah az storage blob list mencantumkan semua blob yang disimpan dalam kontainer. Anda dapat menggunakan berbagai pendekatan untuk menyempurnakan cakupan pencarian Anda. Tidak ada batasan jumlah kontainer atau blob yang dapat dimiliki akun penyimpanan. Untuk berpotensi menghindari pengambilan ribuan blob, sebaiknya batasi jumlah data yang dikembalikan.
Gunakan parameter --prefix untuk memilih satu file yang diketahui atau rentang file yang namanya dimulai dengan string yang ditentukan. Anda dapat menentukan direktori virtual sebagai bagian --prefix dari parameter .
Secara default, hanya blob yang ditampilkan dalam operasi listing. Dalam beberapa skenario, Anda mungkin ingin meneruskan nilai untuk parameter --include agar dapat mengembalikan jenis objek tambahan seperti blob yang dihapus lembut, cuplikan, dan versi. Nilai-nilai ini dapat digabungkan untuk mengembalikan beberapa jenis objek.
Parameter --num-results dapat digunakan untuk membatasi jumlah blob yang dikembalikan dari kontainer. Batas layanan sebesar 5.000 diberlakukan pada semua sumber daya Azure. Batas ini memastikan bahwa jumlah data yang dapat dikelola diambil dan tidak mempengaruhi performa. Jika jumlah blob yang dikembalikan melebihi nilai --num-results atau batas layanan, token kelanjutan akan dikembalikan. Token ini memungkinkan Anda menggunakan sejumlah permintaan untuk mengambil sejumlah besar blob. Informasi selengkapnya tersedia di Menghitung sumber daya blob.
Contoh berikut ini memperlihatkan beberapa pendekatan yang digunakan untuk menyediakan daftar blob. Pendekatan pertama mencantumkan semua blob dalam kontainer tertentu. Pendekatan kedua menggunakan --prefix parameter untuk mencantumkan semua blob dalam kontainer yang dimulai dengan awalan yang ditentukan. Pendekatan ketiga menggunakan --num-results parameter untuk membatasi hasil yang dikembalikan dan --show-next-marker parameter untuk menyertakan token kelanjutan dalam hasil. Ketika token kelanjutan ada dalam hasil, token tersebut diteruskan ke panggilan ke az storage blob list berikutnya untuk mengambil serangkaian hasil berikutnya.
Untuk informasi selengkapnya, lihat referensi az storage blob list.
#!/bin/bash
storageAccount="<storage-account>"
containerName="<container-name>"
blobPrefix="<prefix-string>"
numResults=5
#Approach 1: List all blobs in a container by name.
az storage blob list \
--account-name $storageAccount \
--container $containerName \
--query "[].name" \
--auth-mode login \
--output tsv
#Approach 2: Use the --prefix parameter to list blobs starting with specified prefix.
az storage blob list \
--account-name $storageAccount \
--container $containerName \
--prefix $blobPrefix \
--query "[].name" \
--auth-mode login \
--output tsv
#Approach 3: Use the continuation token to return the complete set of results.
get_blobs() {
if [ -z "$nextMarker" ]; then
az storage blob list --container-name $containerName --num-results $numResults --account-name $storageAccount --show-next-marker --only-show-errors --auth-mode login
else
az storage blob list --container-name $containerName --num-results $numResults --marker $nextMarker --account-name $storageAccount --show-next-marker --only-show-errors --auth-mode login
fi
}
total=0
nextMarker=""
while true; do
blobs=$(get_blobs $containerName $numResults $storageAccount $nextMarker)
nextMarker=""
blobsLength=$(echo $blobs | jq length)
if [ $blobsLength -le 0 ]; then
break
fi
blobIndex=0
while read blob; do
if [ $blobIndex -eq $(($blobsLength-1)) ];
then
nextMarker="$(echo $blob | jq -r .nextMarker)"
else
blobName=$(echo $blob | jq .name)
echo "blobname: $blobName"
fi
((blobIndex++))
done <<<$(echo $blobs | jq -c '.[]')
total=$(($total+$blobsLength-1))
echo "Processed $total blobs so far"
# echo "nextMarker: $nextMarker"
if [ "${nextMarker}" = "null" ]; then
echo -e "\nAccountName: $storageAccount, ContainerName: $containerName "
echo "Processed $total blobs in total."
break
fi
done
Mengunduh blob
Bergantung pada kasus penggunaan, Anda akan menggunakan perintah az storage blob download atau az storage blob download-batch untuk mengunduh blob. Untuk mengunduh blob tertentu, panggil langsung perintah az storage blob download dan teruskan nilai untuk parameter --container-name, --file, dan --name. Blob diunduh ke direktori shell secara default, tetapi lokasi alternatif dapat ditentukan. Operasi tersebut akan gagal disertai dengan kesalahan jika jalur Anda tentukan tidak ada.
Untuk mengunduh beberapa blob secara rekursif dari kontainer penyimpanan, gunakan perintah az storage blob download-batch. Perintah ini mendukung pencocokan pola nama file Unix dengan parameter --pattern. Pola yang didukung adalah *, ?, [seq], dan [!seq]. Untuk mempelajari selengkapnya, lihat dokumentasi Python terkait pencocokan pola nama file Unix.
Contoh kode berikut ini memberikan contoh pendekatan pengunduhan tunggal dan pengunduhan beberapa kali. Alat ini juga menawarkan pendekatan yang lebih sederhana untuk mencari semua kontainer terhadap file tertentu menggunakan karakter pengganti. Karena beberapa lingkungan dapat memiliki ribuan sumber daya, menggunakan --num-results parameter disarankan.
Untuk informasi selengkapnya, kunjungi az storage blob download dan az storage blob download batch referensi.
#!/bin/bash
#Set variables
storageAccount="<storage-account>"
containerName="demo-container"
destinationPath="C:\\temp\\downloads\\"
destinationFilename="downloadedBlob.txt"
file="$destinationPath$destinationFilename"
sourceBlobName="demo-file.txt"
#Download a single named blob
az storage blob download \
--container $containerName \
--file $file \
--name $sourceBlobName \
--account-name $storageAccount \
--auth-mode login
#Download multiple blobs using a pattern value
az storage blob download-batch \
--destination $destinationPath \
--source $containerName \
--pattern images/*.png \
--account-name $storageAccount \
--auth-mode login
#Use a loop to download matching blobs in a list of containers
containerList=$( \
az storage container list \
--query "[].name" \
--num-results 5 \
--account-name $storageAccount \
--auth-mode login \
--output tsv
)
for row in $containerList
do
tmpName=$(echo $row | sed -e 's/\r//g')
echo $tmpName
az storage blob download-batch \
--destination $destinationPath \
--source $tmpName \
--pattern *louis*.* \
--account-name $storageAccount \
--auth-mode login
done
Mengelola properti blob dan metadata
Sebuah objek penyimpanan menunjukkan kedua properti sistem dan metadata yang ditentukan oleh pengguna. Properti sistem ada pada setiap sumber daya Blob Storage. Beberapa properti bersifat baca-saja, sementara yang lain bisa dibaca atau diubah. Di balik layar, beberapa properti sistem memetakan ke header HTTP standar tertentu.
Metadata yang ditentukan pengguna terdiri dari satu atau beberapa pasangan nama-nilai yang Anda tentukan untuk sumber daya Blob Storage. Anda dapat menggunakan metadata untuk menyimpan nilai tambahan dengan sumber daya. Nilai metadata ditujukan untuk Anda sendiri, dan tidak memengaruhi perilaku sumber daya.
Membaca properti blob
Untuk membaca properti blob atau metadata, Anda harus mengambil blob dari layanan terlebih dahulu. Gunakan perintah az storage blob show untuk mengambil properti dan metadata blob, tetapi tidak kontennya. Contoh berikut mengambil blob dan menampilkan propertinya.
Untuk informasi selengkapnya, lihat referensi az storage blob show.
#!/bin/bash
#Set variables
storageAccount="<storage-account>"
containerName="demo-container"
az storage blob show \
--container demo-container \
--name demo-file.txt \
--account-name $storageAccount \
--auth-mode login
Baca dan tulis metadata blob
Metadata blob adalah kumpulan pasangan nama/nilai opsional yang terkait dengan blob. Seperti yang diperlihatkan dalam contoh sebelumnya, pada awalnya tidak ada metadata yang terkait dengan blob, meskipun dapat ditambahkan ketika diperlukan. Untuk membaca, gunakan perintah az storage blob metadata show. Untuk memperbarui metadata blob, Anda akan menggunakan az storage blob metadata update dan menyediakan array pasangan kunci dan nilai. Untuk informasi selengkapnya, lihat referensi az storage blob metadata.
Untuk informasi selengkapnya, lihat referensi az storage blob metadata.
Contoh di bawah ini pertama-tama memperbarui metadata blob, lalu mengonfirmasinya, dan kemudian mengambilnya kembali.
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container"
blobName="blue-moon.mp3"
metadata=("Written=1934" "Recorded=1958")
metadata+=("Lyricist=Lorenz Hart")
metadata+=("Composer=Richard Rogers")
metadata+=("Artist=Tony Bennett")
#Update metadata
az storage blob metadata update \
--container-name $containerName \
--name $blobName \
--metadata "${metadata[@]}" \
--account-name $storageAccount \
--auth-mode login
#Retrieve updated blob metadata
az storage blob metadata show \
--container-name $containerName \
--name $blobName \
--account-name $storageAccount \
--auth-mode login
Operasi penyalinan untuk blok data biner besar
Ada banyak skenario di mana blob dari berbagai jenis dapat disalin. Contoh dalam artikel ini terbatas pada blok blob. Azure CLI menawarkan perintah yang menjalankan operasi pada satu sumber daya atau beberapa sumber daya, bergantung pada persyaratan Anda.
Untuk menyalin blob tertentu, gunakan perintah az storage blob copy start dan tentukan nilai untuk kontainer serta blob sumber dan tujuan. Anda juga dapat mencantumkan pengidentifikasi sumber daya seragam (URI), akses bersama, atau tanda tangan akses bersama (SAS) sebagai sumbernya.
Anda juga dapat menentukan kondisi di mana blob akan disalin. Syarat ini dapat diatur untuk blob sumber atau tujuan. Anda dapat mereferensikan tanggal terakhir diubah, data tag, atau nilai ETag. Misalnya, Anda dapat memilih untuk menyalin blob yang belum dimodifikasi baru-baru ini ke wadah terpisah. Untuk informasi selengkapnya, lihat Menentukan header kondisional untuk operasi Blob service.
Anda dapat menggunakan perintah az storage blob copy start-batch untuk menyalin beberapa blob secara rekursif antarkontainer penyimpanan dalam akun penyimpanan yang sama. Perintah ini memerlukan nilai untuk parameter --source-container dan --destination-container, dan dapat menyalin semua file antara sumber dan tujuan. Seperti perintah batch CLI lainnya, perintah ini mendukung pencocokan pola nama file Unix dengan parameter --pattern. Pola yang didukung adalah *, ?, [seq], dan [!seq]. Untuk mempelajari selengkapnya, lihat dokumentasi Python terkait pencocokan pola nama file Unix.
Catatan
Pertimbangkan penggunaan AzCopy untuk kemudahan dan performa, terutama saat menyalin blob antar akun penyimpanan. AzCopy adalah utilitas baris perintah yang dapat Anda gunakan untuk menyalin gumpalan atau file ke atau dari akun penyimpanan. Cari tahu selengkapnya tentang cara Mulai menggunakan AzCopy.
Untuk informasi selengkapnya, lihat referensi az storage blob copy.
Sampel kode berikut memberikan contoh dari operasi penyalinan tunggal dan operasi penyalinan ganda. Karena beberapa lingkungan dapat memiliki ribuan sumber daya, menggunakan --num-results parameter disarankan. Contoh pertama menyalin blob secret-town-road.png dari kontainer foto ke kontainer lokasi. Kedua kontainer berada dalam akun penyimpanan yang sama. Hasil tersebut memverifikasi keberhasilan operasi penyalinan.
#!/bin/bash
storageAccount="<storage-account>"
sourceContainer="photos"
blobName="secret-town-road.jpg"
destContainer="locations"
az storage blob copy start \
--destination-container $destContainer \
--destination-blob $blobName \
--source-container $sourceContainer \
--source-blob $blobName \
--account-name $storageAccount \
--auth-mode login
Membuat cuplikan blob
Setiap sewa yang terkait dengan blob dasar tidak akan memengaruhi snapshot. Anda tidak dapat menyewa gambar sementara. Baca selengkapnya tentang Snapshot Blob. Untuk informasi selengkapnya, lihat referensi az storage blob snapshot.
Sampel kode berikut mengambil blob dari kontainer penyimpanan dan membuat salinan bayangannya.
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container"
blobName="demo-file.txt"
az storage blob snapshot \
--container-name $containerName \
--name Blue-Moon.mp3 \
--account-name $storageAccount \
--auth-mode login
Atur tingkat lapisan blob
Saat mengubah tingkat blob, Anda memindahkan blob tersebut dan semua datanya ke tingkat target. Anda dapat mengubah tingkat antara panas, dingin, dan arsip dengan az storage blob set-tier perintah .
Bergantung pada kebutuhan, Anda juga dapat menggunakan operasi Salin Blob untuk menyalin blob dari satu tingkat ke tingkat lainnya. Operasi Salin Blob membuat blob baru di tingkat yang diinginkan sambil meninggalkan blob sumber tetap berada di tingkat asli.
Mengubah tingkatan dari dingin atau panas ke arsip dilakukan hampir seketika. Setelah blob dipindahkan ke tingkat arsip , blob dianggap offline dan tidak dapat dibaca atau dimodifikasi. Sebelum Anda dapat membaca atau mengubah data blob yang diarsipkan, Anda harus merehidrasi data tersebut ke tingkatan online. Baca lebih lanjut tentang rehidrasi Blob dari lapisan arsip.
Untuk informasi selengkapnya, lihat referensi az storage blob set-tier.
Kode sampel berikut mengatur tingkat ke panas untuk satu blob bernama dalam archive kontainer.
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container"
az storage blob set-tier
--container-name $containerName \
--name Blue-Moon.mp3 \
--tier Hot \
--account-name $storageAccount \
--auth-mode login
Operasi menggunakan tag blob
Tag indeks blob memudahkan penemuan dan pengelolaan data. Tag indeks blob adalah atribut indeks nilai kunci yang dapat ditentukan oleh pengguna dan dapat Anda terapkan ke blob. Setelah dikonfigurasi, Anda dapat mengkategorikan dan menemukan objek dalam kontainer individual atau seluruh kontainer. Sumber daya blob dapat dikategorikan secara dinamis dengan memperbarui tag indeksnya tanpa memerlukan perubahan dalam organisasi kontainer. Pendekatan ini menawarkan cara fleksibel untuk mengatasi perubahan persyaratan data. Anda bisa menggunakan metadata dan tag indeks secara bersamaan. Untuk informasi selengkapnya tentang tag index, lihat Mengelola dan menemukan data Azure Blob dengan tag indeks blob.
Tips
Sampel kode yang diberikan di bawah menggunakan pencocokan pola untuk mendapatkan teks dari file XML yang memiliki struktur yang diketahui. Contoh ini digunakan untuk mengilustrasikan pendekatan yang disederhanakan untuk menambahkan tag blob menggunakan fungsi Bash dasar. Penggunaan alat penguraian data aktual selalu direkomendasikan saat menggunakan data untuk beban kerja produksi.
Contoh berikut ini menggambarkan cara menambahkan tag indeks blob ke serangkaian blob. Contoh tersebut membaca data dari file XML dan menggunakannya untuk membuat tag indeks di beberapa blob. Untuk menggunakan kode sampel, buat file lokal blob-list.xml di direktori C:\temp. Data XML disediakan di bawah ini.
Untuk informasi selengkapnya, lihat referensi az storage blob set-tier.
<Venue Name="House of Prime Rib" Type="Restaurant">
<Files>
<File path="transactions/12027121.csv" />
<File path="campaigns/radio-campaign.docx" />
<File path="photos/bannerphoto.png" />
<File path="archive/completed/2020review.pdf" />
<File path="logs/2020/01/01/logfile.txt" />
</Files>
</Venue>
Kode sampel melakukan iterasi baris dalam file XML. Kode tersebut menempatkan elemen Tempat dan membuat variabel untuk nilai Nama dan Jenis. Lalu, kode melakukan iterasi melalui baris yang tersisa dan membuat tag untuk setiap blob yang direferensikan oleh node File.
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container"
while read line
do
#Set Tag values
if echo "$line" | grep -q "<Venue";then
name=`echo "$line" | cut -d'"' -f 2`
type=`echo "$line" | cut -d'"' -f 4`
tags=("name=$name")
tags+=("type=$type")
fi
#Add tags to blobs
if echo "$line" | grep -q "<File ";then
blobName=`echo "$line" | cut -d'"' -f 2`
echo az storage blob tag set \
--container-name $containerName \
--name $blobName \
--account-name $storageAccount \
--auth-mode login \
--tags "{$tags[@]}"
fi
done < /mnt/c/temp/bloblist.xml
Hapus objek penyimpanan (blob)
Anda dapat menghapus satu blob atau serangkaian blob dengan perintah az storage blob delete dan az storage blob delete-batch. Saat menghapus beberapa blob, Anda dapat menggunakan operasi bersyarat, pengulangan, atau otomatisasi lainnya seperti yang ditunjukkan dalam contoh di bawah.
Peringatan
Menjalankan contoh berikut dapat menghapus blob secara permanen. Microsoft merekomendasikan Anda mengaktifkan penghapusan sementara kontainer untuk melindungi kontainer dan blob dari penghapusan yang tidak disengaja. Untuk informasi selengkapnya, lihat Penghapusan lembut untuk kontainer.
Kode sampel berikut memberikan contoh operasi penghapusan individual dan batch. Contoh pertama menghapus satu blob yang diberi nama. Contoh kedua mengilustrasikan penggunaan operasi logis di Bash untuk menghapus beberapa blob. Contoh ketiga menggunakan perintah delete-batch untuk menghapus semua blob dengan format bennet-x , kecuali bennett-2.
Untuk informasi selengkapnya, lihat referensi az storage blob delete dan az storage blob delete-batch.
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container"
blobName="demo-file.txt"
blobPrefix="sinatra-"
#Delete a single, named blob
az storage blob delete \
--container-name $containerName \
--name $blobName \
--account-name $storageAccount \
--auth-mode login
#Iterate a blob list, deleting blobs whose names end with even numbers
## Get list of containers
blobList=$(az storage blob list \
--query "[].name" \
--prefix $blobPrefix \
--container-name $containerName \
--account-name $storageAccount \
--auth-mode login \
--output tsv)
## Delete all blobs with the format *bennett-x* except *bennett-2.*
for row in $blobList
do
#Get the blob's number
tmpBlob=$(echo $row | sed -e 's/\r//g')
tmpName=$(echo ${row%.*} | sed -e 's/\r//g')
if [ `expr ${tmpName: ${#blobPrefix}} % 2` == 0 ]
then
echo "Deleting $tmpBlob"
az storage blob delete \
--container-name $containerName \
--name $tmpBlob \
--account-name $storageAccount \
--auth-mode login
fi
done
#Delete multiple blobs using delete-batch
az storage blob delete-batch \
--source $containerName \
--pattern bennett-[!2].* \
--account-name $storageAccount \
--auth-mode login
Dalam beberapa kasus, blob yang sudah dihapus dapat diambil kembali. Jika opsi perlindungan data penghapusan lembut dari akun penyimpanan Anda diaktifkan, penerusan parameter --include d akan mengembalikan blob yang telah dihapus dalam periode retensi akun. Untuk mempelajari selengkapnya tentang penghapusan lembut, lihat artikel Penghapusan lembut untuk blob.
Gunakan contoh berikut untuk mengambil daftar blob yang dihapus di dalam periode penyimpanan yang terkait dengan kontainer. Contoh pertama menampilkan daftar semua blob yang baru saja dihapus dan tanggal waktu penghapusan. Contoh kedua mencantumkan semua blob yang dihapus, yang cocok dengan awalan tertentu.
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container"
blobPrefix="sinatra-"
#Retrieve a list of all deleted blobs
az storage blob list \
--container-name $containerName \
--include d \
--output table \
--account-name $storageAccount \
--auth-mode login \
--query "[?deleted].{name:name,deleted:properties.deletedTime}"
#Retrieve a list of all deleted blobs matching a specific prefix
az storage blob list \
--container-name $containerName \
--prefix $blobPrefix \
--output table \
--include d \
--account-name $storageAccount \
--auth-mode login \
--query "[].{name:name,deleted:deleted}"
Memulihkan blob yang dihapus
Seperti yang telah disebutkan di Daftar blob, Anda dapat mengonfigurasi opsi proteksi data penghapusan sementara pada akun penyimpanan Anda. Jika diaktifkan, kontainer yang telah dihapus dalam periode retensi terkait dapat dipulihkan. Anda juga dapat menggunakan penerapan versi untuk mempertahankan versi blob sebelumnya untuk setiap pemulihan dan restorasi.
Jika penerapan versi blob dan penghapusan sementara blob diaktifkan, maka memodifikasi, menimpa, menghapus, atau memulihkan blob akan secara otomatis membuat versi yang baru. Metode yang akan Anda gunakan untuk memulihkan blob yang dihapus bergantung pada apakah pengelolaan versi diaktifkan di akun penyimpanan Anda.
Sampel kode berikut memulihkan semua blob yang dihapus sementara atau memulihkan versi terbaru dari suatu blob jika fitur versi diaktifkan. Ini pertama-tama menentukan apakah pengelolaan versi diaktifkan dengan perintah az storage account blob-service-properties show.
Jika penerapan versi diaktifkan, perintah az storage blob list mengambil daftar dari semua versi blob yang bernama unik. Selanjutnya, versi blob dari daftar diambil dan diurutkan berdasarkan tanggal. Jika tidak ada versi yang ditemukan dengan nilai atribut isCurrentVersion, perintah az storage blob copy start akan digunakan untuk membuat salinan aktif dari versi terbaru blob.
Jika penerapan versi dinonaktifkan, perintah az storage blob undelete akan digunakan untuk memulihkan setiap blob yang dihapus sementara dalam kontainer.
Agar dapat mengikuti contoh ini, Anda harus mengaktifkan penghapusan lunak di minimal salah satu akun penyimpanan Anda. Untuk mempelajari selengkapnya tentang opsi perlindungan data penghapusan lunak, silakan lihat artikel Penghapusan Lunak untuk Blob atau referensi az storage blob undelete.
#!/bin/bash
storageAccount="<storage-account>"
groupName="myResourceGroup"
containerName="demo-container"
blobSvcProps=$(
az storage account blob-service-properties show \
--account-name $storageAccount \
--resource-group $groupName)
softDelete=$(echo "${blobSvcProps}" | jq -r '.deleteRetentionPolicy.enabled')
versioning=$(echo "${blobSvcProps}" | jq -r '.isVersioningEnabled')
# If soft delete is enabled
if $softDelete
then
# If versioning is enabled
if $versioning
then
# Get all blobs and versions using -Unique to avoid processing duplicates/versions
blobList=$(
az storage blob list \
--account-name $storageAccount \
--container-name $containerName \
--include dv \--query "[?versionId != null].{name:name}" \
--auth-mode login -o tsv | uniq)
# Iterate the collection
for blob in $blobList
do
# Get all versions of the blob, newest to oldest
blobVers=$(
az storage blob list \
--account-name $storageAccount \
--container-name $containerName \
--include dv \
--prefix $blob \
--auth-mode login -o json | jq 'sort_by(.versionId) | reverse | .[]')
# Select the first (newest) object
delBlob=$(echo "$blobVers" | jq -sr '.[0]')
# Verify that the newest version is NOT the latest (that the version is "deleted")
if [[ $(echo "$delBlob" | jq '.isCurrentVersion') != true ]];
then
# Get the blob's versionId property, build the URI to the blob
versionID=$(echo "$delBlob" | jq -r '.versionId')
uri="https://$storageAccount.blob.core.windows.net/$containerName/$blob?versionId=$versionID"
# Copy the latest version
az storage blob copy start \
--account-name $storageAccount \
--destination-blob $blob \
--destination-container $containerName \
--source-uri $uri \
--auth-mode login
delBlob=""
fi
done
else
#Retrieve all deleted blobs
blobList=$( \
az storage blob list \
--container-name $containerName \
--include d \
--output tsv \
--account-name $storageAccount \
--auth-mode login \
--query "[?deleted].[name]" \
)
#Iterate list of deleted blobs and restore
for row in $blobList
do
tmpName=$(echo $row | sed -e 's/\r//g')
echo "Restoring $tmpName"
az storage blob undelete \
--container-name $containerName \
--name $tmpName \
--account-name $storageAccount \
--auth-mode login
done
fi
else
#Soft delete is not enabled
echo "Sorry, the delete retention policy is not enabled."
fi