تمكين وإدارة تعيين الإصدار لكائن ثنائي كبير الحجم
يمكنك تمكين تعيين إصدار تخزين Blob للحفاظ تلقائيًا على الإصدارات السابقة من كائن ثنائي كبير الحجم عند تعديلها أو حذفها. عند تمكين تعيين إصدار كائن ثنائي كبير الحجم، يمكنك استعادة إصدار سابق من كائن ثنائي كبير الحجم لاسترداد بياناتك إذا تم تعديله أو حذفه عن طريق الخطأ.
توضح هذه المقالة كيفية تمكين أو تعطيل تعيين إصدار كائن ثنائي كبير الحجم لحساب التخزين باستخدام مدخل Azure أو قالب Azure Resource Manager. لمعرفة المزيد عن تعيين إصدار كائن ثنائي كبير الحجم، راجع تعيين إصدار كائن ثنائي كبير الحجم.
تمكين إصدار كائن ثنائي كبير الحجم
لتمكين تعيين إصدار كائن ثنائي كبير الحجم لحساب تخزين في مدخل Azure:
- انتقل إلى حساب التخزين لديك في المدخل.
- ضمن خدمة Blob، اختر حماية البيانات.
- في قسم تعيين الإصدار، حدّد ممكَّن.
تعديل كائن ثنائي كبير الحجم لتشغيل إصدار جديد
يوضح مثال التعليمات البرمجية التالي كيفية تشغيل إنشاء إصدار جديد باستخدام مكتبة عميل Azure Storage لـ .NET، الإصدار 12.5.1 أو إصدار لاحق. قبل تشغيل هذا المثال، تأكد من تمكين تعيين الإصدار لحساب التخزين لديك.
ينشئ المثال كائنًا ثنائيًا كبير الحجم للكتلة، ثم يقوم بتحديث بيانات تعريف الكائن. يؤدي تحديث بيانات تعريف الكائن إلى إنشاء إصدار جديد. يسترد المثال الإصدار الأولي والإصدار الحالي، ويوضح أن الإصدار الحالي فقط يتضمن بيانات التعريف.
public static async Task UpdateVersionedBlobMetadata(BlobContainerClient blobContainerClient,
string blobName)
{
try
{
// Create the container.
await blobContainerClient.CreateIfNotExistsAsync();
// Upload a block blob.
BlockBlobClient blockBlobClient = blobContainerClient.GetBlockBlobClient(blobName);
string blobContents = string.Format("Block blob created at {0}.", DateTime.Now);
byte[] byteArray = Encoding.ASCII.GetBytes(blobContents);
string initalVersionId;
using (MemoryStream stream = new MemoryStream(byteArray))
{
Response<BlobContentInfo> uploadResponse =
await blockBlobClient.UploadAsync(stream, null, default);
// Get the version ID for the current version.
initalVersionId = uploadResponse.Value.VersionId;
}
// Update the blob's metadata to trigger the creation of a new version.
Dictionary<string, string> metadata = new Dictionary<string, string>
{
{ "key", "value" },
{ "key1", "value1" }
};
Response<BlobInfo> metadataResponse =
await blockBlobClient.SetMetadataAsync(metadata);
// Get the version ID for the new current version.
string newVersionId = metadataResponse.Value.VersionId;
// Request metadata on the previous version.
BlockBlobClient initalVersionBlob = blockBlobClient.WithVersion(initalVersionId);
Response<BlobProperties> propertiesResponse = await initalVersionBlob.GetPropertiesAsync();
PrintMetadata(propertiesResponse);
// Request metadata on the current version.
BlockBlobClient newVersionBlob = blockBlobClient.WithVersion(newVersionId);
Response<BlobProperties> newPropertiesResponse = await newVersionBlob.GetPropertiesAsync();
PrintMetadata(newPropertiesResponse);
}
catch (RequestFailedException e)
{
Console.WriteLine(e.Message);
Console.ReadLine();
throw;
}
}
static void PrintMetadata(Response<BlobProperties> propertiesResponse)
{
if (propertiesResponse.Value.Metadata.Count > 0)
{
Console.WriteLine("Metadata values for version {0}:", propertiesResponse.Value.VersionId);
foreach (var item in propertiesResponse.Value.Metadata)
{
Console.WriteLine("Key:{0} Value:{1}", item.Key, item.Value);
}
}
else
{
Console.WriteLine("Version {0} has no metadata.", propertiesResponse.Value.VersionId);
}
}
إدراج إصدارات الكائن الثنائي كبير الحجم
لإدراج إصدارات الكائن الثنائي كبير الحجم أو لقطات مع مكتبة عميل .NET v12، حدد المعلمة BlobStates باستخدام حقل الإصدار.
يوضح مثال التعليمات البرمجية التالي كيفية إدراج إصدار الكائنات الثنائية كبيرة الحجم بمكتبة عميل Azure Storage لـ .NET، قم بتعيين الإصدار 12.5.1 أو أحدث. قبل تشغيل هذا المثال، تأكد من تمكين تعيين الإصدار لحساب التخزين لديك.
private static void ListBlobVersions(BlobContainerClient blobContainerClient,
string blobName)
{
try
{
// Call the listing operation, specifying that blob versions are returned.
// Use the blob name as the prefix.
var blobVersions = blobContainerClient.GetBlobs
(BlobTraits.None, BlobStates.Version, prefix: blobName)
.OrderByDescending(version => version.VersionId).Where(blob => blob.Name == blobName);
// Construct the URI for each blob version.
foreach (var version in blobVersions)
{
BlobUriBuilder blobUriBuilder = new BlobUriBuilder(blobContainerClient.Uri)
{
BlobName = version.Name,
VersionId = version.VersionId
};
if ((bool)version.IsLatestVersion.GetValueOrDefault())
{
Console.WriteLine("Current version: {0}", blobUriBuilder);
}
else
{
Console.WriteLine("Previous version: {0}", blobUriBuilder);
}
}
}
catch (RequestFailedException e)
{
Console.WriteLine(e.Message);
Console.ReadLine();
throw;
}
}