Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Blob Storage támogatja a blokkblobokat, a hozzáfűző blobokat és a lapblobokat. A blokkblobok nagy mennyiségű adat hatékony feltöltésére vannak optimalizálva. A blokkblobok ideálisak képek, dokumentumok és más típusú adatok tárolására, amelyek nem tartoznak véletlenszerű olvasási és írási műveletek hatálya alá. Ez a cikk a blokkblobok működését ismerteti.
Előfeltételek
Az Azure Storage eléréséhez Azure-előfizetésre lesz szüksége. Ha még nem rendelkezik előfizetéssel, a kezdés előtt hozzon létre egy ingyenes fiókot .
Az Azure Storage-hoz való minden hozzáférés egy tárfiókon keresztül történik. Ebben a rövid útmutatóban hozzon létre egy tárfiókot az Azure Portal, az Azure PowerShell vagy az Azure CLI használatával. A tárfiókok létrehozásával kapcsolatban lásd : Tárfiók létrehozása.
A környezet előkészítése az Azure CLI-hez
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: Az Azure Cloud Shell használatának első lépései.
Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, telepítse az Azure CLI-t. Ha Windows vagy macOS rendszert használ, fontolja meg az Azure CLI Docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért lásd: Hitelesítés az Azure-ba az Azure CLI használatával.
Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata és kezelése az Azure CLI-vel.
Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.
- Ez a cikk az Azure CLI 2.0.46-os vagy újabb verzióját igényli. Az Azure Cloud Shell használata esetén a legújabb verzió már telepítve van.
Blob Storage-hozzáférés engedélyezése
A Blob Storage-hoz való hozzáférést az Azure CLI-ből engedélyezheti a Microsoft Entra hitelesítő adataival vagy egy tárfiók hozzáférési kulcsával. A Microsoft Entra hitelesítő adatainak használata ajánlott, és a jelen cikk példái kizárólag a Microsoft Entra-azonosítót használják.
A Blob Storage-beli adatműveletek Azure CLI-parancsai támogatják a --auth-mode paramétert, amely lehetővé teszi egy adott művelet engedélyezésének megadását. Állítsa be a paramétert --auth-mode úgy, hogy a Microsoft Entra hitelesítő adataival engedélyezze a bejelentkezést . A paramétert csak a --auth-mode Blob Storage-adatműveletek támogatják. Az olyan felügyeleti műveletek, mint például egy erőforráscsoport vagy tárfiók létrehozása, automatikusan a Microsoft Entra hitelesítő adatait használják az engedélyezéshez. További információ: A blobadatokhoz való hozzáférés engedélyezése az Azure CLI-vel.
Futtassa a login parancsot egy böngésző megnyitásához és az Azure-előfizetéshez való csatlakozáshoz.
az login
Tároló létrehozása
Minden blobadat tárolókban van tárolva, ezért az adatok feltöltéséhez legalább egy tárolóerőforrásra lesz szüksége. Ha szükséges, az alábbi példában hozzon létre egy tárolót. További információ: Blobtárolók kezelése az Azure CLI használatával.
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container"
# Create a container object
az storage container create \
--name $containerName \
--account-name $storageAccount
--auth-mode login
Ha a cikkben szereplő példákat használja, a zárójelben szereplő helyőrző értékeket a saját értékeire kell cserélnie. Az Azure CLI-vel való bejelentkezéssel kapcsolatos további információkért lásd: Bejelentkezés az Azure CLI-vel.
Blobok feltöltése
Az Azure CLI olyan parancsokat kínál, amelyek a követelményektől függően egy erőforráson vagy több erőforráson hajtanak végre műveleteket.
Ha egy fájlt fel szeretne tölteni egy blokkblobba, adja át a szükséges paraméterértékeket a az storage blob upload parancsnak. Adja meg a forrás elérési útját és a fájl nevét a --file paraméterrel, valamint a céltároló nevét a --container-name paraméterrel. A paramétert is meg kell adnia --account-name . Ez a parancs létrehoz egy új blobot, vagy felülírja az eredeti blobot, ha már létezik.
A parancs használatával az storage blob upload-batch rekurzív módon feltölthet több blobot egy tárolóba. A Unix fájlnévminta egyeztetésével megadhat egy fájltartományt, amelyet fel szeretne tölteni a --pattern paraméterrel. A támogatott minták a következők*: , ?[seq]és [!seq]. További információkért tekintse meg a Unix-fájlnévminta-egyeztetés Python-dokumentációját.
Az alábbi példában az első művelet a az storage blob upload parancs használatával tölt fel egyetlen, elnevezett fájlt. A forrásfájl és a céltároló a --file és --container-name paraméterekkel van megadva.
A második művelet azt mutatja be, hogy a az storage blob upload-batch parancs több fájl feltöltésére használható. A --if-modified-since paraméter biztosítja, hogy csak az elmúlt hét napon belül módosított fájlok legyenek feltöltve. A paraméter által megadott értéket UTC formátumban kell megadni.
#!/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
Blobok listázása
Alapértelmezés szerint a parancs felsorolja a az storage blob list tárolóban tárolt összes blobot. A keresés hatókörének finomításához különböző megközelítéseket használhat. A tárfiókok tárolóinak vagy blobjainak száma nincs korlátozva. A több ezer blob lekérésének elkerülése érdekében érdemes korlátozni a visszaadott adatok mennyiségét.
--prefix A paraméterrel kijelölhet egyetlen ismert fájlt vagy egy olyan fájltartományt, amelynek a neve egy meghatározott sztringgel kezdődik. A paraméter részeként --prefix megadhat egy virtuális könyvtárat.
Alapértelmezés szerint csak a blobok jelennek meg egy listázási művelet során. Bizonyos esetekben érdemes lehet átadni egy értéket a --include paraméternek, amely további típusú objektumokat, például helyreállíthatóan törölt blobokat, pillanatképeket és verziókat ad vissza. Ezek az értékek kombinálhatók több objektumtípus visszaadásához.
A --num-results paraméter a tárolóból visszaadott blobok számának korlátozására használható. Az összes Azure-erőforrásra 5000 szolgáltatási korlát vonatkozik. Ez a korlát biztosítja, hogy kezelhető mennyiségű adat legyen lekérve, és hogy a teljesítmény ne legyen befolyásolva. Ha a visszaadott blobok száma meghaladja az értéket vagy a --num-results szolgáltatási korlátot, a rendszer egy folytatási jogkivonatot ad vissza. Ez a token lehetővé teszi, hogy több kérés segítségével lekérjünk tetszőleges számú blobot. További információ a bloberőforrások számbavételéről.
Az alábbi példa számos módszert mutat be a blobok listájának megadására. Az első megközelítés egy adott tárolóban lévő összes blobot felsorolja. A második megközelítés a paraméterrel --prefix listáz minden olyan blobot a tárolókban, amelyek a megadott előtaggal kezdődnek. A harmadik megközelítés a paramétert használja a --num-results visszaadott eredmények korlátozására, a paraméter pedig --show-next-marker a folytatási jogkivonatot az eredményekbe való belefoglalására. Ha egy folytató token jelenik meg az eredményekben, azt továbbítják a következő híváshoz, hogy lekérdezzék a következő eredménykészletet.
További információért lásd a storage blob list hivatkozást.
#!/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
Blob letöltése
A használati esettől függően a az storage blob download vagy a az storage blob download-batch parancsot fogja használni a blobok letöltéséhez. Az egyes blobok letöltéséhez hívja meg közvetlenül a az storage blob download parancsot, és adja át a --container-name, --fileés --name paraméterek értékeit. A blob alapértelmezés szerint le van töltve a rendszerhéj könyvtárába, de megadhat egy másik helyet. Ha a megadott elérési út nem létezik, a művelet sikertelen lesz.
Ha több blobot szeretne rekurzív módon letölteni egy tárolóból, használja a az storage blob download-batch parancsot. Ez a parancs támogatja a Unix fájlnév-mintázást a --pattern paraméterrel. A támogatott minták a következők*: , ?[seq]és [!seq]. További információkért tekintse meg a Unix-fájlnévminta-egyeztetés Python-dokumentációját.
Az alábbi mintakód egy és több letöltési módszert is mutat be. Emellett egyszerűsített módszert is kínál az összes tárolóban egy helyettesítő karakter használatával adott fájlok keresésére. Mivel egyes környezetek több ezer erőforrással rendelkezhetnek, a --num-results paraméter használata ajánlott.
További információ: az az storage blob download és az storage blob download batch hivatkozást.
#!/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
Blobtulajdonságok és metaadatok kezelése
A blobok a rendszertulajdonságokat és a felhasználó által definiált metaadatokat is elérhetővé teszik. A rendszertulajdonságok minden Blob Storage-erőforráson léteznek. Egyes tulajdonságok írásvédettek, míg mások olvashatók vagy beállíthatók. A borítás mögött egyes rendszertulajdonságok bizonyos szabványos HTTP-fejlécekre vannak leképezve.
A felhasználó által definiált metaadatok egy vagy több, a Blob Storage-erőforráshoz megadott név-érték párból állnak. Metaadatok használatával további értékeket tárolhat az erőforrással. A metaadat-értékek saját célra szolgálnak, és nem befolyásolják az erőforrás viselkedését.
Blobtulajdonságok olvasása
A blob tulajdonságainak vagy metaadatainak olvasásához először le kell kérnie a blobot a szolgáltatásból.
az storage blob show A parancs használatával lekérheti a blob tulajdonságait és metaadatait, a tartalmát azonban nem. Az alábbi példa lekéri a blobot, és felsorolja annak tulajdonságait.
További információért tekintse meg az az storage blob show hivatkozást.
#!/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
Blob metaadatainak olvasása és írása
A blob metaadatai a blobhoz társított név-érték párok választható készletei. Ahogy az előző példában is látható, a blobokhoz kezdetben nincsenek metaadatok társítva, de szükség esetén hozzáadható. Az olvasáshoz használja a az storage blob metadata show parancsot. A blob metaadatainak frissítéséhez a az storage blob metadata update használatával kell megadnia a kulcs-érték párokat. További információkért tekintse meg az az storage blob metaadatainak hivatkozását .
További információkért tekintse meg az az storage blob metaadatainak hivatkozását .
Az alábbi példa először frissíti, majd véglegesíti egy blob metaadatait, majd lekéri.
#!/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
Blobok másolási műveletei
Számos forgatókönyv van, amelyekben különböző típusú blobok másolhatók. A cikkben szereplő példák a blobok blokkolására korlátozódnak. Az Azure CLI olyan parancsokat kínál, amelyek a követelményektől függően egy erőforráson vagy több erőforráson hajtanak végre műveleteket.
Egy adott blob másolásához használja a parancsot, és adja meg a az storage blob copy start forrás- és céltárolók és blobok értékeit. Forrásként egységes erőforrás-azonosítót (URI), megosztást vagy közös hozzáférésű jogosultságkódot (SAS) is megadhat.
Megadhatja a blob másolásának feltételeit is. Ezek a feltételek a forrás- vagy célblobra is beállíthatók. Hivatkozhat az utolsó módosított dátumra, címkeadatokra vagy ETag-értékre. Dönthet például úgy, hogy a legutóbb nem módosított blobokat külön tárolóba másolja. További információ: Feltételes fejlécek megadása blobszolgáltatás-műveletekhez.
A parancs használatával az storage blob copy start-batch több blobot is újrakurzívan másolhat ugyanazon tárfiók tárolói között. Ez a parancs a --source-container és --destination-container paraméterek értékeit igényli, és képes átmásolni az összes fájlt a forrás és cél között. A parancssori felület más kötegelt parancsaihoz hasonlóan ez a parancs is támogatja a --pattern paraméterrel egyező Unix-fájlnévmintát. A támogatott minták a következők*: , ?[seq]és [!seq]. További információkért tekintse meg a Unix-fájlnévminta-egyeztetés Python-dokumentációját.
Megjegyzés
Fontolja meg az AzCopy használatát az egyszerűség és a teljesítmény érdekében, különösen akkor, ha blobokat másol a tárfiókok között. Az AzCopy egy parancssori segédprogram, amellyel blobokat és fájlokat másolhat a tárfiókok között. További információ az AzCopy használatának első lépéseiről.
További információkért lásd az az storage blob másolat referenciáját.
Az alábbi mintakód egy és több másolási műveletre is mutat példát. Mivel egyes környezetek több ezer erőforrással rendelkezhetnek, a --num-results paraméter használata ajánlott. Az első példa átmásolja a secret-town-road.png blobot a fényképek tárolójából a helyek tárolóba. Mindkét tároló ugyanabban a tárfiókban található. Az eredmény ellenőrzi a másolási művelet sikerességét.
#!/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
Pillanatkép-blobok
Az alapblobhoz társított bérletek nem befolyásolják a pillanatképet. Ön nem köthet bérleti szerződést egy pillanatfelvételre. További információ a Blob-pillanatképekről. További információért lásd a tárolási blob pillanatkép hivatkozást.
Az alábbi mintakód lekéri a blobot egy tárolóból, és pillanatképet hoz létre róla.
#!/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
Blobszint beállítása
Amikor módosítja egy blob szintjét, áthelyezi a blobot és annak összes adatát a célszintre. A paranccsal módosíthatja a tárolási réteget a gyakori, ritka és az storage blob set-tier között.
A követelményektől függően a Blob másolása műveletet is használhatja, hogy blobokat másoljon az egyik rétegből a másikba. A Blob másolása művelet létrehoz egy új blobot a kívánt szinten, miközben a forrásblob az eredeti szinten marad.
A ritka vagy gyakori elérésű szintről archív szintre való váltás szinte azonnal megtörténik. Miután a blob átkerül az archív szintre, offline állapotúnak minősül, és nem olvasható és nem módosítható. Mielőtt elolvashatja vagy módosíthatja egy archivált blob adatait, fel kell töltenie őket egy online szintre. További információ a blob-rehidratálásról az archív szintből.
További információért lásd a storage blob set-tier hivatkozást.
Az alábbi mintakód a tárolóban lévő elnevezett blob szintjét archive állítja be.
#!/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
Blobcímkéket használó műveletek
A blobindexcímkék megkönnyítik az adatkezelést és a felderítést. A blobindex-címkék felhasználó által definiált kulcs-érték index attribútumok, amelyeket a blobokra alkalmazhat. A konfigurálás után kategorizálhatja és megkeresheti az objektumokat egy adott tárolóban vagy az összes tárolóban. A bloberőforrások dinamikusan kategorizálhatók az indexcímkék frissítésével anélkül, hogy módosítást kellene igényelniük a tárolószervezetben. Ez a megközelítés rugalmas módot kínál a változó adatkövetelmények kezelésére. Egyszerre használhat metaadat- és indexcímkéket is. További információ az indexcímkékről: Azure Blob-adatok kezelése és megkeresése blobindexcímkékkel.
Tipp.
Az alábbi kódminta mintamegfeleltetés használatával kér le szöveget egy ismert struktúrával rendelkező XML-fájlból. A példa a blobcímkék egyszerű Bash-funkcióval történő hozzáadásának egyszerűsített megközelítését szemlélteti. A tényleges adatelemző eszköz használata mindig ajánlott az éles számítási feladatokhoz szükséges adatok felhasználásakor.
Az alábbi példa bemutatja, hogyan adhat hozzá blobindexcímkéket blobok sorozatához. A példa adatokat olvas be egy XML-fájlból, és arra használja, hogy indexcímkéket hozzon létre több blobon. A mintakód használatához hozzon létre egy helyi blob-list.xml fájlt a C:\temp könyvtárban. Az XML-adatok alább olvashatók.
További információért lásd a storage blob set-tier hivatkozást.
<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>
A mintakód iterálja az XML-fájl sorait. Megkeresi a Helyszín elemet, és változókat hoz létre a Név és a Típus értékhez. Ezután végigmegy a fennmaradó sorokon, és címkéket hoz létre a File csomópontok által hivatkozott blobokhoz.
#!/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
Blobok törlése
A parancsokkal az storage blob deleteaz storage blob delete-batch egyetlen blobot vagy blobsorozatot is törölhet. Több blob törlésekor használhat feltételes műveleteket, hurkokat vagy egyéb automatizálásokat az alábbi példákban látható módon.
Figyelmeztetés
Az alábbi példák futtatása véglegesen törölheti a blobokat. A Microsoft javasolja a tárolók helyreállítható törlésének engedélyezését a tárolók és blobok véletlen törlés elleni védelméhez. További információért lásd: Tárolók puha törlése.
Az alábbi mintakód egyéni és kötegelt törlési műveletekre is mutat példát. Az első példa egyetlen, megnevezett blobot töröl. A második példa azt szemlélteti, hogy a Bashben a logikai műveletek több blob törlésére használhatók. A harmadik példa a bennett-x formátumú blobok törlésére használja a delete-batch parancsot, kivéve a bennett-2 formátumot.
További információkért tekintse meg az az storage blob delete és az az storage blob delete-batch referenciát.
#!/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
Bizonyos esetekben lehetséges a törölt blobok lekérése. Ha a tárfiók "soft delete" adatvédelmi opciója engedélyezve van, a --include d paraméter átadása visszaadja a fiók megőrzési időszakán belül törölt blobokat. A helyreállítható törléssel kapcsolatos további információkért tekintse meg a blobok helyreállítható törléséről szóló cikket.
Az alábbi példák segítségével lekérheti a tárolóhoz társított megőrzési időszakon belül törölt blobok listáját. Az első példa megjeleníti az összes legutóbb törölt blob listáját, valamint azokat a dátumokat, amelyeken törölték őket. A második példa felsorolja az összes törölt blobot, amelyek megfelelnek egy adott előtagnak.
#!/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}"
Törölt blob visszaállítása
A Blobok listája szakaszban leírtaknak megfelelően konfigurálhatja a helyreállítható törlési adatvédelmi beállítást a tárfiókban. Ha engedélyezve van, a kapcsolódó megőrzési időszakon belül törölt tárolók visszaállíthatók. A verziószámozás segítségével fenntarthatja a blobok korábbi verzióit minden helyreállításhoz és visszaállításhoz.
Ha a blob verziószámozása és a blob helyreállítható törlése is engedélyezve van, akkor a blobok módosítása, felülírása, törlése vagy visszaállítása automatikusan létrehoz egy új verziót. A törölt blobok visszaállításához használt módszer attól függ, hogy engedélyezve van-e a verziószámozás a tárfiókban.
Az alábbi kódminta visszaállítja az összes helyreállíthatóan törölt blobot, vagy ha engedélyezve van a verziószámozás, visszaállítja a blob legújabb verzióját. Először meghatározza, hogy a verziószámozás engedélyezve van-e a az storage account blob-service-properties show paranccsal.
Ha engedélyezve van a verziószámozás, a parancs lekéri az az storage blob list összes egyedileg elnevezett blobverzió listáját. Ezután a lista blobverziói dátum szerint lesznek lekérve és rendezve. Ha az attribútumértékkel isCurrentVersion nem található verzió, a az storage blob copy start parancs a blob legújabb verziójának aktív másolatát készíti el.
Ha a verziószámozás le van tiltva, a az storage blob undelete parancs a tárolóban lévő összes helyreállíthatóan törölt blob visszaállítására szolgál.
A példa követéséhez engedélyeznie kell a helyreállítható törlést legalább egy tárfiókon. A puha törlés adatvédelmi beállításával kapcsolatos további információkért tekintse meg a blobok puha törléséről szóló cikket, vagy a storage blob undelete témájú hivatkozó dokumentációt.
#!/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