إدارة الكائنات الثنائية الكبيرة الحجم المحذوفة بشكل مبدئي واستعادتها

يحمي الحذف المبدئي لكائن ثنائي كبير الحجم نقطة فردية وإصداراتها ولقطاتها وبيانات التعريف لها من الحذف العرضي أو استبدالها عن طريق الحفاظ على البيانات المحذوفة في النظام لفترة زمنية محددة. خلال فترة الاحتفاظ، يمكنك استعادة الكائن الثنائي كبير الحجم إلى حالته عند الحذف. بعد انتهاء فترة الاحتفاظ، يتم حذف الكائن الثنائي كبير الحجم بشكل دائم. لمزيد من المعلومات حول الحذف المبدئي لكائن ثنائي كبير الحجم، راجع الحذف المبدئي لكائن ثنائي كبير الحجم.

يُعد الحذف المبدئي لكائن ثنائي كبير الحجم جزءاً من استراتيجية شاملة لحماية البيانات لبيانات كائن ثنائي كبير الحجم. لمعرفة المزيد حول توصيات Microsoft لحماية البيانات، راجع نظرة عامة على حماية البيانات .

إدارة الكائنات الثنائية كبيرة الحجم المحذوفة بشكل تلقائي

إدارة الكائنات الثنائية كبيرة الحجم المحذوفة برفق باستخدام مدخل Microsoft Azure

يمكنك استخدام مدخل Microsoft Azure لعرض واستعادة الكائنات الثنائية كبيرة الحجم واللقطات المحذوفة.

عرض الكائنات الثنائية كبيرة الحجم المحذوفة

عندما يتم حذف كائنات ثنائية كبيرة الحجم مبدئياً، فإنها تكون غير مرئية في مدخل Microsoft Azure بشكل افتراضي. لعرض الكائنات الثنائية كبيرة الحجم المحذوفة، انتقل إلى صفحة نظرة عامة للحاوية وقم بتبديل إعداد إظهار الكائنات الثنائية كبيرة الحجم المحذوفة . يتم عرض الكائنات الثنائية كبيرة الحجم المحذوفة مبدئياً بحالة محذوفة.

Screenshot showing how to list soft-deleted blobs in Azure portal

بعد ذلك، حدد الكائن الثنائي كبير الحجم المحذوف من قائمة الكائنات الثنائية كبيرة الحجم لعرض خصائصها. تحت علامة التبويب نظرة عامة، لاحظ أن حالة الكائن الثنائي كبير الحجم قد تم تعيينها على محذوفة. كما تعرض البوابة عدد الأيام حتى يتم حذف الكائن الثنائي كبير الحجم بشكل دائم.

Screenshot showing properties of soft-deleted blob in Azure portal

عرض اللقطات المحذوفة

يؤدي حذف كائن ثنائي كبير الحجم أيضًا إلى حذف أي لقطات مرتبطة بالكائن الثنائي كبير الحجم. إذا كان الكائن الثنائي كبير الحجم المحذوف مبدئياً يحتوي على لقطات، فيمكن أيضًا عرض اللقطات المحذوفة في البوابة. اعرض خصائص الكائن الثنائي كبير الحجم المحذوف مبدئياً، ثم انتقل إلى علامة التبويب اللقطات، وقم بتبديل إظهار اللقطات المحذوفة.

Screenshot showing

استعادة الكائنات الثنائية كبيرة الحجم المحذوفة مبدئياً عند تعطيل الإصدار

لاستعادة كائن ثنائي كبير الحجم محذوفة مبدئياً في مدخل Microsoft Azure عند عدم تمكين تعيين إصدار الكائن الثنائي كبير الحجم، قم أولا بعرض خصائص الكائن الثنائي كبير الحجم، ثم حدد الزر إلغاء الحذف في علامة التبويب نظرة عامة. تؤدي استعادة كائن ثنائي كبير الحجم أيضا إلى استعادة أي لقطات تم حذفها أثناء فترة الاحتفاظ بالحذف المبدئي.

Screenshot showing how to restore a soft-deleted blob in Azure portal

لترويج لقطة محذوفة مبدئياً إلى الكائن الثنائي كبير الحجم الأساسي، تأكد أولاً من استعادة اللقطات المحذوفة مبدئياً. حدد زر إلغاء الحذف لاستعادة اللقطات المحذوفة مبدئياً، حتى لو لم يتم حذف اللقطة الأساسية نفسها. بعد ذلك، حدد اللقطة للترويج واستخدام زر تعزيز اللقطة لاستبدال الكائن الثنائي كبير الحجم الأساسي بمحتويات اللقطة.

Screenshot showing how to promote a snapshot to the base blob

استعادة الكائنات الثنائية كبيرة الحجم المحذوفة مبدئياً عند تمكين الإصدار

لاستعادة كائن ثنائي كبير الحجم محذوف مبدئياً في مدخل Microsoft Azure عند تمكين تعيين الإصدار، حدد الكائن الثنائي كبير الحجم المحذوف مبدئياً لعرض خصائصها، ثم حدد علامة التبويب الإصدارات. حدد الإصدار الذي تريد الترويج له ليكون الإصدار الحالي، ثم حدد إنشاء الإصدار الحالي.

Screenshot showing how to promote a version to restore a blob in Azure portal

لاستعادة الإصدارات المحذوفة أو اللقطات عند تمكين الإصدار، اعرض خصائص الكائن الثنائي كبير الحجم، ثم حدد زر إلغاء حذف في علامة التبويب نظرة عامة.

ملاحظة

عند تمكين الإصدار، يؤدي تحديد زر إلغاء الحذف على كائن ثنائي كبير الحجم محذوف إلى استعادة أي إصدارات أو لقطات محذوفة برفق، ولكنه لا يستعيد الكائن الثنائي كبير الحجم الأساسي. لاستعادة الكائن الثنائي كبير الحجم الأساسي، يجب عليك الترويج لإصدار سابق.

إدارة الكائنات الثنائية كبيرة الحجم المحذوفة مبدئياً باستخدام الرمز

يمكنك استخدام مكتبات عملاء Azure Storage لاستعادة كائن ثنائي كبير الحجم أو لقطة محذوفة. تُبين الأمثلة التالية كيفية استخدام مكتبة عميل .NET.

استعادة الكائنات الثنائية كبيرة الحجم المحذوفة مبدئياً عند تعطيل الإصدار

لاستعادة الكائنات الثنائية كبيرة الحجم المحذوفة عند عدم تمكين الإصدار، اتصل بعملية إلغاء حذف الكائن الثنائي كبير الحجم على تلك الكائنات الثنائية كبيرة الحجم. تقوم عملية إلغاء حذف كائن ثنائي كبير الحجم باستعادة الكائنات الثنائية كبيرة الحجم المحذوفة مبدئياً وأي لقطات محذوفة مرتبطة بتلك الكائنات الثنائية كبيرة الحجم.

استدعاء إلغاء حذف كائن ثنائي كبير الحجم على كائن ثنائي كبير الحجم لم يتم حذفه ليس له أي تأثير. يستدعي المثال التالي إلغاء حذف كائن ثنائي كبير الحجم على جميع الكائنات الثنائية كبيرة الحجم في حاوية، ويستعيد الكائنات الثنائية كبيرة الحجم المحذوفة مبدئياً ولقطاتها:


foreach (BlobItem blob in container.GetBlobs(BlobTraits.None, BlobStates.Deleted))
{
    await container.GetBlockBlobClient(blob.Name).UndeleteAsync();
}

لاستعادة لقطة معينة محذوفة مبدئياً، اتصل أولا بعملية إلغاء حذف كائن ثنائي كبير الحجم على الكائن الثنائي كبير الحجم الأساسي، ثم انسخ اللقطة المطلوبة فوق الكائن الثنائي كبير الحجم الأساسي. يعيد المثال التالي كائن ثنائي كبير الحجم لكتلة إلى أحدث لقطة تم إنشاؤها:

// Restore the deleted blob.
await blockBlob.UndeleteAsync();

// List blobs in this container that match prefix.
// Include snapshots in listing.
Pageable<BlobItem> blobItems = container.GetBlobs
                (BlobTraits.None, BlobStates.Snapshots, prefix: blockBlob.Name);

// Get the URI for the most recent snapshot.
BlobUriBuilder blobSnapshotUri = new BlobUriBuilder(blockBlob.Uri)
{
    Snapshot = blobItems
               .OrderByDescending(snapshot => snapshot.Snapshot)
               .ElementAtOrDefault(1)?.Snapshot
};

// Restore the most recent snapshot by copying it to the blob.
blockBlob.StartCopyFromUri(blobSnapshotUri.ToUri());

استعادة الكائنات الثنائية كبيرة الحجم المحذوفة مبدئياً عند تمكين الإصدار

لاستعادة كائن ثنائي كبير الحجم محذوف مبدئياً عند تمكين تعيين الإصدار، انسخ إصداراً سابقاً فوق الكائن الثنائي كبير الحجم الأساسي باستخدام عملية نسخ كائن ثنائي كبير الحجم أو نسخ كائن ثنائي كبير الحجممن عنوان URL.

// List blobs in this container that match prefix.
// Include versions in listing.
Pageable<BlobItem> blobItems = container.GetBlobs
                (BlobTraits.None, BlobStates.Version, prefix: blockBlob.Name);

// Get the URI for the most recent version.
BlobUriBuilder blobVersionUri = new BlobUriBuilder(blockBlob.Uri)
{
    VersionId = blobItems
                .OrderByDescending(version => version.VersionId)
                .ElementAtOrDefault(1)?.VersionId
};

// Restore the most recently generated version by copying it to the base blob.
blockBlob.StartCopyFromUri(blobVersionUri.ToUri());

إدارة الكائنات الثنائية كبيرة الحجم والدلائل المحذوفة (مساحة أسماء هرمية)

يمكنك استعادة الكائنات الثنائية كبيرة الحجم والدلائل المحذوفة في الحسابات التي تحتوي على مساحة أسماء هرمية.

إدارة الكائنات الثنائية كبيرة الحجم المحذوفة برفق باستخدام مدخل Microsoft Azure

يمكنك استخدام مدخل Microsoft Azure لعرض الكائنات الثنائية كبيرة الحجم والدلائل المحذوفة مبدئياً واستعادتها.

عرض الكائنات الثنائية كبيرة الحجم والدلائل المحذوفة

عندما يتم حذف الكائنات الثنائية كبيرة الحجم أو الدلائل، فإنها تكون غير مرئية في مدخل Microsoft Azure بشكل افتراضي. لعرض الكائنات الثنائية كبيرة الحجم والدلائل المحذوفة، انتقل إلى صفحة نظرة عامة للحاوية وقم بتبديل إعداد إظهار الكائنات الثنائية كبيرة الحجم المحذوفة . يتم عرض الكائنات الثنائية كبيرة الحجم والدلائل المحذوفة مبدئياً بحالة محذوفة. تعرض الصورة التالية دليلًا محذوفًا مبدئياً.

Screenshot showing how to list soft-deleted blobs in Azure portal (hierarchical namespace enabled accounts).

ملاحظة

إذا قمت بإعادة تسمية دليل يحتوي على عناصر محذوفة (أدلة فرعية و كائنات ثنائية كبيرة الحجم )، فإن هذه العناصر المحذوفة سوف تنفصل عن الدليل، لذلك لن تظهر في مدخل Microsoft Azure عند تبديل إعداد إظهار الكائنات الثنائية كبيرة الحجم المحذوفة. إذا كنت تريد عرضها في مدخل Microsoft Azure، فسيتعين عليك إعادة اسم الدليل إلى اسمه الأصلي أو إنشاء دليل منفصل يستخدم اسم الدليل الأصلي.

بعد ذلك، حدد الدليل المحذوف أو كائن ثنائي كبير الحجم من القائمة لعرض خصائصه. تحت علامة التبويب نظرة عامة، لاحظ أنه تم تعيين الحالة على محذوف. كما تعرض البوابة عدد الأيام حتى يتم حذف الكائن الثنائي كبير الحجم بشكل دائم.

Screenshot showing properties of soft-deleted blob in Azure portal (hierarchical namespace enabled accounts).

استعادة الكائنات الثنائية كبيرة الحجم والدلائل المحذوفة مبدئياً

لاستعادة كائن ثنائي كبير الحجم أو دليل محذوف في مدخل Microsoft Azure، قم أولاً بعرض خصائص الكائن الثنائي كبير الحجم أو الدليل، ثم حدد زر إلغاء الحذف في علامة التبويب نظرة عامة. تعرض الصورة التالية زر "إلغاء الحذف" في دليل محذوف.

Screenshot showing how to restore a soft-deleted blob in Azure portal (hierarchical namespace enabled accounts).

استعادة الكائنات الثنائية كبيرة الحجم والدلائل المحذوفة من خلال استخدام PowerShell

هام

ينطبق هذا القسم فقط على الحسابات التي لها مساحة أسماء هرمية.

  1. تأكد من تثبيت وحدة المعاينة Az.Storage . لمزيد من المعلومات، راجع تمكين الحذف المبدئي لكائن ثنائي كبير الحجم عبر PowerShell.

  2. احصل على تفويض حساب التخزين باستخدام مفتاح حساب التخزين أو سلسلة الاتصال أو Azure Active Directory (Azure AD). لمزيد من المعلومات، راجع الاتصال إلى الحساب.

    يحصل المثال التالي على تفويض باستخدام مفتاح حساب تخزين.

    $ctx = New-AzStorageContext -StorageAccountName '<storage-account-name>' -StorageAccountKey '<storage-account-key>'
    
  3. لاستعادة العنصر المحذوف مبدئياً، استخدم Restore-AzDataLakeGen2DeletedItem الأمر.

    $filesystemName = "my-file-system"
    $dirName="my-directory"
    $deletedItems = Get-AzDataLakeGen2DeletedItem -Context $ctx -FileSystem $filesystemName -Path $dirName
    $deletedItems | Restore-AzDataLakeGen2DeletedItem
    

    إذا قمت بإعادة تسمية الدليل الذي يحتوي على العناصر المحذوفة مبدئياً، فسيتم فصل هذه العناصر عن الدليل. إذا كنت ترغب في استعادة هذه العناصر، فسيتعين عليك إعادة اسم الدليل إلى اسمه الأصلي أو إنشاء دليل منفصل يستخدم اسم الدليل الأصلي. خلاف ذلك، سوف تتلقى خطأ عند محاولة استعادة هذه العناصر المحذوفة مبدئياً.

استعادة الكائنات الثنائية كبيرة الحجم والدلائل المحذوفة مبدئياً باستخدام Azure CLI

هام

ينطبق هذا القسم فقط على الحسابات التي لها مساحة أسماء هرمية.

  1. تأكد من تثبيت storage-preview الإضافة. لمزيد من المعلومات، راجع تمكين الحذف المبدئي لكائن ثنائي كبير الحجم باستخدام PowerShell.

  2. احصل على قائمة بالعناصر المحذوفة.

    $filesystemName = "my-file-system"
    az storage fs list-deleted-path -f $filesystemName --auth-mode login
    
  3. لاستعادة عنصر، استخدم الأمر az storage fs undelete-path.

    $dirName="my-directory"
    az storage fs undelete-path -f $filesystemName --deleted-path-name $dirName -deletion-id "<deletionId>" --auth-mode login
    

    إذا قمت بإعادة تسمية الدليل الذي يحتوي على العناصر المحذوفة مبدئياً، فسيتم فصل هذه العناصر عن الدليل. إذا كنت ترغب في استعادة هذه العناصر، فسيتعين عليك إعادة اسم الدليل إلى اسمه الأصلي أو إنشاء دليل منفصل يستخدم اسم الدليل الأصلي. خلاف ذلك، سوف تتلقى خطأ عند محاولة استعادة هذه العناصر المحذوفة مبدئياً.

استعادة الكائنات الثنائية كبيرة الحجم والدلائل المحذوفة الناعمة باستخدام .NET

هام

ينطبق هذا القسم فقط على الحسابات التي لها مساحة أسماء هرمية.

  1. افتح موجه الأوامر وغير الدليل (cd) إلى مجلد المشروع خاصتك على سبيل المثال:

    cd myProject
    
  2. قم بتثبيت Azure.Storage.Files.DataLake -v 12.7.0 إصدار Azure.Storage.Files.DataLake حزمة NuGet باستخدام الأمر dotnet add package.

    dotnet add package Azure.Storage.Files.DataLake -v -v 12.7.0 -s https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-net/nuget/v3/index.json
    
  3. ثم أضف هذه العبارات باستخدام العبارات إلى أعلى ملف التعليمات البرمجية.

    using Azure;
    using Azure.Storage;
    using Azure.Storage.Files.DataLake;
    using Azure.Storage.Files.DataLake.Models;
    using NUnit.Framework;
    using System;
    using System.Collections.Generic;
    using System.Threading.Tasks;
    
  4. تقوم التعليمات البرمجية التالية بحذف أحد الدلائل، ثم تقوم باستعادة أحد الدلائل المحذوفة مبدئياً.

    تفترض هذه الطريقة أنك أنشأت مثيل DataLakeServiceClient . لمعرفة كيفية إنشاء مثيل DataLakeServiceClient ، راجع الاتصال بالحساب.

       public void RestoreDirectory(DataLakeServiceClient serviceClient)
       {
           DataLakeFileSystemClient fileSystemClient =
              serviceClient.GetFileSystemClient("my-container");
    
           DataLakeDirectoryClient directory =
               fileSystem.GetDirectoryClient("my-directory");
    
           // Delete the Directory
           await directory.DeleteAsync();
    
           // List Deleted Paths
           List<PathHierarchyDeletedItem> deletedItems = new List<PathHierarchyDeletedItem>();
           await foreach (PathHierarchyDeletedItem deletedItem in fileSystemClient.GetDeletedPathsAsync())
           {
             deletedItems.Add(deletedItem);
           }
    
           Assert.AreEqual(1, deletedItems.Count);
           Assert.AreEqual("my-directory", deletedItems[0].Path.Name);
           Assert.IsTrue(deletedItems[0].IsPath);
    
           // Restore deleted directory.
           Response<DataLakePathClient> restoreResponse = await fileSystemClient.RestorePathAsync(
           deletedItems[0].Path.Name,
           deletedItems[0].Path.DeletionId);
    
       }
    
    

    إذا قمت بإعادة تسمية الدليل الذي يحتوي على العناصر المحذوفة مبدئياً، فسيتم فصل هذه العناصر عن الدليل. إذا كنت ترغب في استعادة هذه العناصر، فسيتعين عليك إعادة اسم الدليل إلى اسمه الأصلي أو إنشاء دليل منفصل يستخدم اسم الدليل الأصلي. خلاف ذلك، سوف تتلقى خطأ عند محاولة استعادة هذه العناصر المحذوفة مبدئياً.

استعادة الكائنات الثنائية كبيرة الحجم والدلائل المحذوفة مبدئياً باستخدام Java

هام

ينطبق هذا القسم فقط على الحسابات التي لها مساحة أسماء هرمية.

  1. للبدء، افتح ملف pom.xml في محرر النصوص. أضف عنصر التبعية التالي إلى مجموعة التبعيات.

    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-storage-file-datalake</artifactId>
      <version>12.6.0</version>
    </dependency>
    
  2. ثم أضف عبارات الاستيراد هذه إلى ملف التعليمات البرمجية خاصتك.

    Put imports here
    
  3. يستعيد المقتطف التالي ملفًا محذوفًا مبدئياً باسم my-file.

    تفترض هذه الطريقة أنك أنشأت مثيل DataLakeServiceClient . لمعرفة كيفية إنشاء مثيل DataLakeServiceClient ، راجع الاتصال بالحساب.

    
    public void RestoreFile(DataLakeServiceClient serviceClient){
    
        DataLakeFileSystemClient fileSystemClient =
            serviceClient.getFileSystemClient("my-container");
    
        DataLakeFileClient fileClient =
            fileSystemClient.getFileClient("my-file");
    
        String deletionId = null;
    
        for (PathDeletedItem item : fileSystemClient.listDeletedPaths()) {
    
            if (item.getName().equals(fileClient.getFilePath())) {
               deletionId = item.getDeletionId();
            }
        }
    
        fileSystemClient.restorePath(fileClient.getFilePath(), deletionId);
     }
    
    

    إذا قمت بإعادة تسمية الدليل الذي يحتوي على العناصر المحذوفة مبدئياً، فسيتم فصل هذه العناصر عن الدليل. إذا كنت ترغب في استعادة هذه العناصر، فسيتعين عليك إعادة اسم الدليل إلى اسمه الأصلي أو إنشاء دليل منفصل يستخدم اسم الدليل الأصلي. خلاف ذلك، سوف تتلقى خطأ عند محاولة استعادة هذه العناصر المحذوفة مبدئياً.

استعادة الكائنات الثنائية كبيرة الحجم والدلائل المحذوفة مبدئياً باستخدام Python

هام

ينطبق هذا القسم فقط على الحسابات التي لها مساحة أسماء هرمية.

  1. قم بتثبيت إصدار 12.4.0 أو أعلى من مكتبة عميل Azure Data Lake Storage ل Python باستخدام النقطة. يقوم هذا الأمر بتثبيت أحدث إصدار من مكتبة عميل Azure Data Lake Storage لـ Python.

    pip install azure-storage-file-datalake
    
  2. أضف بيانات الاستيراد هذه إلى أعلى ملف التعليمات البرمجية خاصتك.

    import os, uuid, sys
    from azure.storage.filedatalake import DataLakeServiceClient
    from azure.storage.filedatalake import FileSystemClient
    
  3. تقوم التعليمات البرمجية التالية بحذف أحد الدلائل، ثم تقوم باستعادة أحد الدلائل المحذوفة مبدئياً.

    يحتوي مثال التعليمات البرمجية أدناه على عنصر اسمه service_client نوع DataLakeServiceClient. للاطلاع على أمثلة حول كيفية إنشاء مثيل DataLakeServiceClient ، راجع الاتصال بالحساب.

    def restoreDirectory():
    
        try:
            global file_system_client
    
            file_system_client = service_client.create_file_system(file_system="my-file-system")
    
            directory_path = 'my-directory'
            directory_client = file_system_client.create_directory(directory_path)
            resp = directory_client.delete_directory()
    
            restored_directory_client = file_system_client.undelete_path(directory_client, resp['deletion_id'])
            props = restored_directory_client.get_directory_properties()
    
            print(props)
    
        except Exception as e:
            print(e)
    
    

    إذا قمت بإعادة تسمية الدليل الذي يحتوي على العناصر المحذوفة مبدئياً، فسيتم فصل هذه العناصر عن الدليل. إذا كنت ترغب في استعادة هذه العناصر، فسيتعين عليك إعادة اسم الدليل إلى اسمه الأصلي أو إنشاء دليل منفصل يستخدم اسم الدليل الأصلي. خلاف ذلك، سوف تتلقى خطأ عند محاولة استعادة هذه العناصر المحذوفة مبدئياً.

الخطوات التالية