إدارة الكائنات الثنائية كبيرة الحجم للكتل باستخدام Azure CLI
يدعم مخزن البيانات الثنائية كبيرة الحجم، والبيانات الثنائية كبيرة الحجم الملحقة، وبيانات الصفحة الثنائية كبيرة الحجم. تم تحسين كتل الكائنات الثنائية كبيرة الحجم لتحميل كميات كبيرة من البيانات بكفاءة. تعتبر الكائنات الثنائية كبيرة الحجم للكتل مثالية لتخزين الصور والمستندات وأنواع البيانات الأخرى التي لا تخضع لعمليات القراءة والكتابة العشوائية. توضح هذه المقالة كيفية العمل مع كتل الكائنات الثنائية كبيرة الحجم.
المتطلبات الأساسية
للوصول إلى Azure Storage، يلزم الحصول على أحد اشتراكات Azure. إذا لم يكن لديك اشتراك بالفعل، فأنشئ حسابًا مجانيًا قبل أن تبدأ.
يتم الوصول إلى Azure Storage من خلال حساب تخزين. بالنسبة للتشغيل السريع هذا، أنشئ حساب تخزين باستخدام مدخل Azure أو Azure PowerShell أو Azure CLI. للمساعدة في إنشاء حساب تخزين، راجع إنشاء حساب تخزين.
إعداد البيئة الخاصة بك لـ Azure CLI
استخدم بيئة Bash في Azure Cloud Shell. لمزيد من المعلومات، راجع التشغيل السريع ل Bash في Azure Cloud Shell.
إذا كنت تفضل تشغيل أوامر مرجع CLI محلياً قم بتثبيت CLI Azure. إذا كنت تعمل على نظام تشغيل Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
إذا كنت تستخدم تثبيت محلي، يُرجى تسجيل الدخول إلى Azure CLI مستخدمًا أمر az login. لإنهاء عملية المصادقة، اتبع الخطوات المعروضة في جهازك. للحصول على خيارات أخرى لتسجيل دخول، راجع تسجيل الدخول باستخدام Azure CLI.
عندما يُطلب منك، قم بتثبيت ملحق Azure CLI عند الاستخدام لأول مرة. لمزيد من المعلومات بشأن الامتدادات، راجع استخدام امتدادات مع Azure CLI.
يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.
- تتطلب هذه المقالة الإصدار 2.0.46، أو إصداراً أحدث من Azure CLI. إذا كنت تستخدم Azure Cloud Shell، يتم تثبيت أحدث إصدار بالفعل.
السماح بالوصول إلى Blob storage
يمكنك تخويل الوصول إلى تخزين Blob من Azure CLI إما باستخدام بيانات اعتماد Microsoft Entra أو باستخدام مفتاح الوصول إلى حساب التخزين. يوصى باستخدام بيانات اعتماد Microsoft Entra، وتستخدم أمثلة هذه المقالة معرف Microsoft Entra حصريا.
تعمل أوامر Azure CLI لعمليات البيانات مقابل Blob storage على دعم المعلمة --auth-mode
، والتي تمكنك من تحديد طريقة تخويل إحدى العمليات المعينة. قم بتعيين المعلمة --auth-mode
لتسجيل الدخول لتخويلها باستخدام بيانات اعتماد Microsoft Entra. لا تدعم عمليات بيانات تخزين Blob سوى المعلمة --auth-mode
فقط. تستخدم عمليات الإدارة، مثل إنشاء مجموعة موارد أو حساب تخزين، بيانات اعتماد Microsoft Entra تلقائيا للتخويل. للحصول على مزيد من المعلومات، راجع اختيار كيفية تخويل الوصول إلى بيانات الكائنات الثنائية كبيرة الحجم باستخدام Azure CLI.
شغّل الأمر login
لفتح المتصفح واتصل باشتراك Azure.
az login
إنشاء حاوية
يتم تخزين جميع بيانات الكائنات الثنائية كبيرة الحجم داخل حاويات، لذلك ستحتاج إلى مورد حاوية واحد على الأقل قبل أن تتمكن من تحميل البيانات. إذا لزم الأمر، استخدم المثال التالي لإنشاء حاوية تخزين. لمزيد من المعلومات، راجع إدارة حاويات الكائنات الثنائية كبيرة الحجم باستخدام 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
عند استخدام الأمثلة المذكورة في هذا المقال، ستحتاج إلى استبدال قيم العنصر النائب بين قوسين بقيمك الخاصة. لمزيد من المعلومات حول تسجيل الدخول إلى Azure باستخدام Azure CLI، راجع تسجيل الدخول باستخدام Azure CLI.
تحميل كائنات Blob
يوفر Azure CLI أوامر تقوم بتنفيذ العمليات على مورد واحد أو على موارد متعددة، وفقا لمتطلباتك.
لتحميل ملف إلى كتل الكائنات الثنائية كبيرة الحجم، مرر قيم المعلمة المطلوبة إلى الأمر az storage blob upload
. توفير اسم الملف ومسار المصدر باستخدام المعلمة --file
واسم حاوية الوجهة باستخدام المعلمة --container-name
. ستحتاج أيضا إلى توفير المعلمة --account-name
. ينشئ هذا الأمر كائن ثنائي كبير الحجم جديد أو يحل محل الكائن الثنائي كبير الحجم الأصلي إذا كان موجود بالفعل.
يمكنك استخدام الأمر az storage blob upload-batch
لتحميل كائنات ثنائية كبير الحجم متعددة بشكل متكرر إلى حاوية تخزين. يمكنك استخدام مطابقة نمط اسم ملف Unix لتحديد نطاق الملفات لتحميلها باستخدام المعلمة --pattern
. الأنماط المدعومة هي *
و?
و[seq]
و[!seq]
. لمعرفة المزيد، راجع وثائق Python حول مطابقة نمط اسم ملف Unix .
في المثال التالي، تستخدم العملية الأولى الأمر az storage blob upload
لتحميل ملف واحد مسمى. يتم تحديد ملف المصدر وحاوية تخزين الوجهة باستخدام المعلمتين --file
و --container-name
.
توضح العملية الثانية استخدام الأمر az storage blob upload-batch
لتحميل ملفات متعددة. --if-modified-since
تضمن المعلمة تحميل الملفات التي تم تعديلها خلال الأيام السبعة الماضية فقط. يجب توفير القيمة التي توفرها هذه المعلمة بتنسيق 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
سرد الكيانات الثنائية كبيرة الحجم
بشكل افتراضي، يسرد الأمر az storage blob list
جميع الكائنات الثنائية كبير الحجم المخزنة داخل حاوية. يمكنك استخدام أساليب مختلفة لتحديد نطاق البحث. لا يوجد أي قيود على عدد الحاويات أو الكائنات الثنائية كبيرة الحجم التي يمكن أن يحتوي عليها حساب التخزين. لتجنب استرداد الآلاف من الكائنات الثنائية كبيرة الحجم، من المستحسن الحد من كمية البيانات التي يتم إرجاعها.
استخدم المعلمة --prefix
لتحديد ملف واحد معروف أو نطاق الملفات التي تبدأ أسماؤها بسلسلة محددة. يمكنك تحديد دليل ظاهري كجزء من المعلمة --prefix
.
بشكل افتراضي، يتم إرجاع كائنات ثنائية كبير الحجم فقط في عملية إدراج. في بعض السيناريوهات، قد تحتاج إلى تمرير قيمة للمعلمة --include
لإرجاع أنواع إضافية من الكائنات مثل الكائنات الثنائية كبيرة الحجم المحذوفة مبدئيا واللقطات والإصدارات. يمكن دمج هذه القيم لإرجاع أنواع كائنات متعددة.
--num-results
يمكن استخدام المعلمة للحد من عدد الكائنات الثنائية كبيرة الحجم التي تم إرجاعها من حاوية. يتم فرض حد خدمة 5,000 على كافة موارد Azure. يضمن هذا الحد استرداد كميات البيانات التي يمكن التحكم فيها وعدم تأثر الأداء. إذا كان عدد الحاويات التي تم إرجاعها يتجاوز القيمة --num-results
أو حد الخدمة، فسيتم إرجاع رمز مميز للمتابعة. يسمح لك هذا الرمز المميز باستخدام طلبات متعددة لاسترداد أي عدد من الكائنات الثنائية كبير الحجم. يتوفر مزيد من المعلومات حول تعداد موارد كائن ثنائي كبير الحجم.
يوضح المثال التالي عدة نُهج تستخدم لتوفير قائمة الكائنات الثنائية كبيرة الحجم. يسرد النهج الأول جميع الكائنات الثنائية كبيرة الحجم داخل حاوية محددة. يستخدم الأسلوب الثاني المعلمة --prefix
لسرد كافة الكائنات الثنائية كبيرة الحجم في الحاويات التي تبدأ بالبادئة المحددة. يستخدم الأسلوب الثالث المعلمة --num-results
للحد من النتائج التي تم إرجاعها والمعلمة --show-next-marker
لتضمين رمز المتابعة في النتائج. عندما يكون رمز المتابعة موجودا في النتائج، يتم تمريره إلى الاستدعاء az storage blob list
اللاحق لاسترداد المجموعة التالية من النتائج.
لمزيد من المعلومات، راجع مرجع قائمة az storage blob.
#!/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
تنزيل كائن ثنائي كبير الحجم
بناء على حالة الاستخدام الخاصة بك، ستستخدم إما الأمر az storage blob download
أو az storage blob download-batch
لتنزيل كائن ثنائي كبير الحجم. لتنزيل كائن ثنائي كبير الحجم فردي، استدعي الأمر az storage blob download
مباشرة ومرر القيم الخاصة بالمعلمات --container-name
و--file
و--name
. يتم تنزيل الكائن الثنائي كبير الحجم إلى دليل shell بشكل افتراضي، ولكن يمكن تحديد موقع بديل. ستفشل العملية مع حدوث خطأ إذا لم يكن المسار المحدد موجودًا.
لتنزيل كائنات ثنائية كبير الحجم متعددة بشكل متكرر من حاوية تخزين، استخدم الأمر az storage blob download-batch
. يدعم هذا الأمر مطابقة نمط اسم ملف Unix مع المعلمة --pattern
. الأنماط المدعومة هي *
و?
و[seq]
و[!seq]
. لمعرفة المزيد، راجع وثائق Python حول مطابقة نمط اسم ملف Unix .
يوفر نموذج التعليمات البرمجية التالي مثالاً على نهج تنزيل فردية ومتعددة. كما يقدم نهجًا مبسطًا للبحث في جميع الحاويات عن ملفات محددة باستخدام حرف بدل. نظرا لأن بعض البيئات يمكن أن تحتوي على عدة آلاف من الموارد، يوصى باستخدام المعلمة --num-results
.
لمزيد من المعلومات، راجع az storage blob download وaz storage blob download batchreference.
#!/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
إدارة خصائص الكائن الثنائي كبير الحجم وبيانات التعريف
يعرض كائن ثنائي كبير الحجم كلاً من خصائص النظام وبيانات التعريف المعرفة من قبل المستخدم. توجد خصائص النظام على كل مورد من موارد Blob Storage. بعض الخصائص للقراءة فقط، بينما يمكن قراءة خصائص أخرى أو تعيينها. تحت الأغلفة، تُعيّن بعض خصائص النظام إلى عناوين HTTP قياسية معينة.
تتكون بيانات التعريف المعرفة من قبل المستخدم من زوج واحد أو أكثر من أزواج اسم-قيمة التي تحددها لمورد Blob Storage. يمكنك استخدام بيانات التعريف لتخزين قيم إضافية مع المورد. قيم بيانات التعريف هي لأغراضك الخاصة، ولا تؤثر على كيفية تصرف المورد.
قراءة خصائص كائن ثنائي كبير الحجم
لقراءة خصائص كائن ثنائي كبير الحجم أو بيانات التعريف يجب أولاً استرداد كائن ثنائي كبير الحجم من الخدمة. استخدم الأمر az storage blob show
لاسترداد خصائص كائن ثنائي كبير الحجم وبيانات التعريف الخاصة به، ولكن ليس محتواه. يسترد المثال التالي كائن ثنائي كبير الحجم ويسرد خصائصه.
لمزيد من المعلومات، راجع مرجع 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
قراءة وكتابة بيانات التعريف لكائن ثنائي كبير الحجم
بيانات تعريف كائن ثنائي كبير الحجم هي مجموعة اختيارية من أزواج الاسم/القيم المقترنة بكائن ثنائي كبير الحجم. كما هو موضح في المثال السابق، لا توجد بيانات تعريف مقترنة بكائن ثنائي كبير الحجم في البداية، على الرغم من أنه يمكن إضافته عند الضرورة. للقراءة، استخدم الأمر az storage blob metadata show
. لتحديث بيانات تعريف كائن ثنائي كبير الحجم، ستستخدم az storage blob metadata update
وتوفر صفيف أزواج قيم المفاتيح. لمزيد من المعلومات، راجع مرجع بيانات تعريف كائن ثنائي كبير الحجم للتخزين az.
لمزيد من المعلومات، راجع مرجع بيانات تعريف كائن ثنائي كبير الحجم للتخزين az.
يقوم المثال أدناه بالتحديث أولاً ثم يقوم بتنفيذ بيانات تعريف كائن ثنائي كبير الحجم، ثم يستردها.
#!/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
نسخ العمليات للكائنات الثنائية كبيرة الحجم
هناك العديد من السيناريوهات التي يمكن فيها نسخ الكائنات الثنائية كبيرة الحجم من أنواع مختلفة. تقتصر الأمثلة في هذه المقالة على كتل الكائنات الثنائية كبيرة الحجم. يوفر Azure CLI أوامر تقوم بتنفيذ العمليات على مورد واحد أو على موارد متعددة، وفقا لمتطلباتك.
لنسخ كائن ثنائي كبير الحجم معين، استخدم الأمر az storage blob copy start
وحدد قيمًا للحاويات والكائنات الثنائية كبير الحجم للمصدر والوجهة. من الممكن أيضا توفير معرف مورد موحد (URI) أو مشاركة أو توقيع وصول مشترك (SAS) كمصدر.
كما يمكنك أيضا تحديد الشروط التي سيتم بموجبها نسخ كائن ثنائي كبير الحجم. يمكن تعيين هذه الشروط إما لكائن ثنائي كبير الحجم للمصدر أو الوجهة. يمكنك الرجوع إلى آخر تاريخ تم تعديله أو بيانات العلامة أو قيمة ETag. يمكنك، على سبيل المثال، اختيار نسخ كائنات ثنائية كبير الحجم التي لم يتم تعديلها مؤخرًا إلى حاوية منفصلة. لمزيد من المعلومات، راجع تحديد الرؤوس الشرطية لعمليات خدمة كائن ثنائي كبير الحجم.
يمكنك استخدام الأمر az storage blob copy start-batch
لنسخ كائنات ثنائية كبير الحجم متعددة بشكل متكرر بين حاويات التخزين داخل نفس حساب التخزين. يتطلب هذا الأمر قيمًا للمعلمتين --source-container
و--destination-container
، ويمكنه نسخ كافة الملفات بين المصدر والوجهة. مثل أوامر دفعة CLI الأخرى، يدعم هذا الأمر مطابقة نمط اسم ملف Unix مع المعلمة --pattern
. الأنماط المدعومة هي *
و?
و[seq]
و[!seq]
. لمعرفة المزيد، راجع وثائق Python حول مطابقة نمط اسم ملف Unix .
إشعار
ينبغي مراعاة استخدام AzCopy للسهولة والأداء، خاصة عند نسخ كائنات ثنائية كبيرة الحجم بين حسابات التخزين. AzCopy هو أداة سطر الأوامر التي يمكنك استخدامها لنسخ كائنات ثنائية كبيرة الحجم أو ملفات إلى أو من حساب تخزين. تعرف على المزيد حول كيفية البدء باستخدام AzCopy.
لمزيد من المعلومات، راجع مرجع نسخ كائن ثنائي كبير الحجم للتخزين az.
يوفر نموذج التعليمات البرمجية التالي مثالاً على عمليات النسخ الفردية والمتعددة كلاهما. نظرا لأن بعض البيئات يمكن أن تحتوي على عدة آلاف من الموارد، يوصى باستخدام المعلمة --num-results
. ينسخ المثال الأول كائن ثنائي كبير الحجم secret-town-road.png من حاوية الصور إلى حاوية المواقع. توجد الحاويتان داخل نفس حساب التخزين. تتحقق النتيجة من نجاح عملية النسخ.
#!/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
كائنات ثنائية كبيرة الحجم للقطة
لا تؤثر أي عقود إيجار مقترنة بالكائن الثنائي كبير الحجم الأساسي على اللقطة. لا يمكنك الحصول على عقد إيجار على لقطة. اقرأ المزيد عن لقطات كائن ثنائي كبير الحجم. لمزيد من المعلومات، راجع مرجع لقطة كائن ثنائي كبير الحجم للتخزين az.
يسترد نموذج التعليمات البرمجية التالي كائن ثنائي كبير الحجم من حاوية تخزين وتنشئ لقطة منه.
#!/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
تعيين طبقة كائن ثنائي كبير الحجم
عند تغيير طبقة كائن ثنائي كبير الحجم، فأنت تنقل كائن ثنائي كبير الحجم وكافة البيانات الخاصة به إلى الطبقة الهدف. يمكنك تغيير الطبقة بين الساخنة والباردة والأرشفة باستخدام az storage blob set-tier
الأمر .
تبعًا لمتطلباتك، يمكنك أيضا استخدام عملية نسخ كائن ثنائي كبير الحجملنسخ كائن ثنائي كبير الحجم من طبقة إلى أخرى. تقوم عملية Copy Blob بإنشاء كائن ثنائي كبير الحجم جديد في المستوى المطلوب مع ترك الكائن الثنائي كبير الحجم المصدر يبقى في المستوى الأصلي.
يتم تغيير المستويات من بارد أو ساخن إلى أرشيف على الفور تقريبا. بعد نقل كائن ثنائي كبير الحجم إلى طبقة الأرشيف ، يتم اعتباره غير متصل ولا يمكن قراءته أو تعديله. قبل أن تتمكن من قراءة بيانات الكائن الثنائي كبير الحجم المؤرشف أو تعديله، ستحتاج إلى إعادة تحميله إلى طبقة عبر الإنترنت. اقرأ المزيد حول إعادة ترطيب Blob من طبقة الأرشيف.
لمزيد من المعلومات، راجع مرجع az storage blob set-tier .
يعين نموذج التعليمات البرمجية التالي الطبقة إلى hot ل blob واحد يسمى داخل الحاوية archive
.
#!/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
العمليات باستخدام علامات كائن ثنائي كبير الحجم
علامات فهرس كائن ثنائي كبير الحجم تجعل إدارة البيانات واكتشافها أسهل. علامات فهرس كائن ثنائي كبير الحجم هي سمات بحث قيمة المفتاح المعرفة من قبل المستخدم التي يمكنك تطبيقها على الكائنات الثنائية كبيرة الحجم الخاصة بك. بمجرد تكوينه، يمكنك تصنيف الكائنات والعثور عليها داخل حاوية فردية أو عبر كافة الحاويات. يمكن تصنيف موارد كائن ثنائي كبير الحجم بشكل حيوي عن طريق تحديث علامات الفهرس الخاصة بها دون الحاجة إلى التغيير في تنظيم الحاوية. وهذا النهج يوفر طريقة مرنة للتعامل مع متطلبات البيانات المتغيرة. يمكنك استخدام كل من بيانات التعريف وعلامات الفهرس في نفس الوقت. لمزيد من المعلومات، يُرجى مراجعة إدارة بيانات Azure Blob وإيجادها باستخدام علامات فهرس كائن ثنائي كبير الحجم.
تلميح
يستخدم نموذج التعليمات البرمجية الوارد أدناه مطابقة النمط للحصول على نص من ملف XML له بنية معروفة. يٌستخدم المثال لتوضيح نهج مبسط لإضافة علامات كائن ثنائي كبير الحجم باستخدام وظائف Bash الأساسية. يوصى دائما باستخدام أداة تحليل البيانات الفعلية عند استهلاك البيانات لأحمال عمل الإنتاج.
يوضح المثال التالي كيفية إضافة علامات فهرس كائن ثنائي كبير الحجم إلى سلسلة من الكائنات الثنائية كبيرة الحجم. يقرأ المثال البيانات من ملف XML ويستخدمها لإنشاء علامات فهرسة على العديد من الكائنات الثنائية كبيرة الحجم. لاستخدام نموذج التعليمات البرمجية، قم بإنشاء ملف blob-list.xml محلي في الدليل C:\temp. يتم توفير بيانات XML أدناه.
لمزيد من المعلومات، راجع مرجع 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>
يكرر نموذج التعليمات البرمجية الأسطر داخل ملف XML. يحدد موقع عنصر Venue وينشئ متغيرات لقيمName وType. ثم يكرر من خلال الأسطر المتبقية وينشئ علامات لكل نقطة مشار إليها بواسطة عقدة 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
حذف الـ Blobs
يمكنك حذف كائن ثنائي كبير الحجم واحد أو سلسلة من الكائنات الثنائية كبيرة الحجم باستخدام الأمرين az storage blob delete
وaz storage blob delete-batch
. عند حذف كائنات ثنائية كبيرة الحجم متعددة، يمكنك استخدام العمليات الشرطية، أو الحلقات، أو أتمتة أخرى كما هو موضح في الأمثلة أدناه.
تحذير
تشغيل الأمثلة التالية قد يترتب عليه حذف الحاويات والكائنات الثنائية كبيرة الحجم بشكل دائم. توصي Microsoft بتمكين الحذف المبدئي للحاوية لحماية الحاويات والكائنات الثنائية كبيرة الحجم من الحذف العرضي. لمزيد من المعلومات، راجع حذف مبدئي للحاويات.
يوفر نموذج التعليمة البرمجية التالي مثالا على كل من عمليات الحذف الفردية والجماعية. يحذف المثال الأول كائن ثنائي كبير الحجم واحدة مسمى. يوضح المثال الثاني استخدام العمليات المنطقية في Bash لحذف كائنات ثنائية كبير الحجم متعددة. يستخدم المثال الثالث الأمر delete-batch
لحذف جميع الكائنات الثنائية كبير الحجم بتنسيق bennett-x، باستثناء bennett-2.
لمزيد من المعلومات، راجع المرجعين حذف كائن ثنائي كبير الحجم للتخزين az وحذف مجموعة كائنات ثنائية كبير الحجم للتخزين az.
#!/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
في بعض الحالات، من الممكن استرداد الكائنات الثنائية كبيرة الحجم التي تم حذفها. إذا تم تمكين خيار حماية بيانات الحذف المبدئي لحساب التخزين الخاص بك، فإن تمرير المعلمة --include d
يرجع الكائنات الثنائية كبيرة الحجم التي تم حذفها خلال فترة الاحتفاظ بالحساب. لمعرفة المزيد حول الحذف المبدئي، راجع مقالة حذف مبدئي للكائنات الثنائية كبيرة الحجم.
استخدم المثال التالي لاسترداد قائمة الكائنات الثنائية كبيرة الحجم المحذوفة ضمن فترة الاستبقاء المُقترنة بالحاوية. يعرض المثال الأول قائمة بجميع الكائنات الثنائية كبير الحجم المحذوفة مؤخرًا والتواريخ التي تم حذفها فيها. يسرد المثال الثاني جميع الكائنات الثنائية كبير الحجم المحذوفة المطابقة لبادئة معينة.
#!/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}"
استعادة كائن ثنائي محذوف
كما هو مذكور في قسم قائمة الكائنات الثنائية كبيرة الحجم، يمكنك تكوين خيار حماية بيانات الحذف المبدئي على حساب التخزين الخاص بك. عند التمكين، من الممكن استعادة الحاويات المحذوفة خلال فترة الاستبقاء المُقترنة. يمكنك أيضًا استخدام الإصدار للاحتفاظ بالإصدارات السابقة من النقاط الكبيرة لكل عملية استرداد واستعادة.
في حالة تمكين كل من تعيين الإصدار كائن ثنائي كبير الحجم والحذف الناعم له، فإن تعديل كائن ثنائي كبير الحجم أو الكتابة فوقه أو حذفه أو استعادته يؤدي تلقائيًا إلى إنشاء إصدار جديد. تعتمد الطريقة التي ستستخدمها لاستعادة كائن ثنائي كبير الحجم محذوف على ما إذا كان يتم تمكين تعيين الإصدار على حساب التخزين الخاص بك.
يستعيد نموذج التعليمات البرمجية التالي كافة الكرات الثنائية الكبيرة المحذوفة أو إذا تم تمكين تعيين الإصدار، يستعيد أحدث إصدار لكائن ثنائي الحجم. يحدد أولاً ما إذا كان تعيين الإصدار ممكّنًا باستخدام الأمر az storage account blob-service-properties show
.
إذا تم تمكين تعيين الإصدار، يقوم az storage blob list
الأمر باسترداد قائمة بجميع إصدارات blob المسماة بشكل فريد. بعد ذلك، يتم استرداد إصدارات الكائن ثنائي الحجم الموجودة في القائمة وترتيبها حسب التاريخ. إذا لم يتم العثور على إصدارات بقيمة السمة isCurrentVersion
، فسيتم استخدام الأمر az storage blob copy start
لعمل نسخة نشطة من أحدث إصدار.
إذا تم تعطيل تعيين الإصدار، فسيتم استخدام الأمر az storage blob undelete
لاستعادة كل كائن ثنائي تم حذفه مبدئيا في الحاوية.
قبل أن تتمكن من اتباع هذا المثال، ستحتاج إلى تمكين الحذف المبدئي على حساب تخزين واحد على الأقل. لمعرفة المزيد حول خيار حماية بيانات الحذف المبدئي، راجع مقالة حذف مبدئي للكائنات الثنائية كبير الحجم أو مرجع إلغاء حذف كائن ثنائي كبير الحجم للتخزين az.
#!/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