对块 blob 数据执行时间点还原

可以使用时间点还原将一个或多个块 blob 集还原到以前的状态。 本文介绍如何为存储帐户启用时间点还原,以及如何执行还原操作。

有关时间点还原的详细信息,请参阅块 blob 的时间点还原

注意

仅标准性能层中的常规用途 v2 存储帐户支持时间点还原。 只有热访问层和冷访问层中的数据才能使用时间点还原进行还原。

注意

时间点还原仅支持对块 blob 执行还原操作。 无法还原对容器的操作。 如果通过调用删除容器操作从存储帐户中删除了某个容器,将无法使用还原操作来还原该容器。 如果要在以后还原它们,请删除单个 blob,而不是删除整个容器。 此外,Azure 建议为容器和 blob 启用软删除,以防止意外删除。 有关详细信息,请参阅容器软删除blob 软删除

启用和配置时间点还原

在启用和配置时间点还原之前,请先为存储帐户启用其先决条件:软删除、更改源和 blob 版本控制。 若要详细了解如何启用上述每项功能,请参阅以下文章:

重要

启用软删除、更改源和 blob 版本控制可能会产生额外费用。 有关详细信息,请参阅 Blob 软删除在 Azure Blob 存储中更改源支持Blob 版本控制

要使用 Azure 门户配置时间点还原,请执行以下步骤:

  1. 导航到 Azure 门户中的存储帐户。
  2. 在“设置”下,选择“数据保护”。
  3. 选择“打开时间点还原”。 选择此选项后,还会启用 Blob 软删除、版本控制和更改源。
  4. 以天为单位设置时间点还原的最大还原点。 此数字必须至少为一天,并小于为 blob 软删除指定的保持期。
  5. 保存所做更改。

下图显示了一个已配置时间点还原的存储帐户,其还原点配置为七天前,Blob 软删除的保持期为 14 天。

Screenshot showing how to configure point-in-time restore in the Azure portal

选择还原点

还原点是指要将数据还原到的日期和时间。 Azure 存储始终使用 UTC 日期/时间值作为还原点。 不过,Azure 门户支持以本地时间指定还原点,然后再将日期/时间值转换为 UTC 日期/时间值来执行还原操作。

使用 PowerShell 或 Azure CLI 执行还原操作时,应将还原点指定为 UTC 日期/时间值。 如果使用本地时间值(而不是 UTC 时间值)指定还原点,在某些情况下,还原操作可能仍会按预期方式运行。 例如,如果本地时间为 UTC 减去五个小时,则指定本地时间值将导致还原点比提供的值早五个小时。 如果在这五个小时期间内没有对要还原范围内的数据进行更改,则还原操作将生成相同的结果,不论提供的时间值为何。 建议为还原点指定 UTC 时间,以避免造成意外结果。

执行还原操作

可以还原存储帐户中的所有容器,也可以还原一个或多个容器中的一系列 Blob。 Blob 范围是按字典顺序定义的。 每个还原操作最多支持 10 个字典范围。 范围起始值包括在内,但不包括范围结束值。

为开始范围和结束范围指定的容器模式必须包含至少三个字符(即最小值为 3)。 用于分隔容器名称与 blob 名称的正斜杠 (/) 不计入该最小值。 有关如何构建还原范围的几个示例:

  • 若要在还原范围内包含名为 myContainer 的整个容器,请使用起始范围 myContainer 和结束范围 myContainer-0。 这说明了如何将“-0”作为后缀添加到结束范围值的容器名称中,以包含容器中用于还原的所有内容。
  • 若要包含整个虚拟目录层次结构,例如容器 myContainer 中的目录 myFolder,请使用起始范围 myContainer/myFolder/ 和结束范围 myContainer/myFolder0。 将“0”作为后缀添加到结束范围的虚拟目录名称将包含所有要还原的前缀为“myContainer/myFolder/”的文件。

字典范围内不支持通配符。 任何通配符都将被视为标准字符。

可以还原 $root$web 容器中的 blob,方法是:在传递给还原操作的范围中显式指定它们。 $root$web 容器只有在显式指定的情况下才会进行还原。 无法还原其他系统容器。

仅还原块 blob。 页 blob 和追加 blob 不在还原操作的范围之内。 有关追加 blob 相关限制的详细信息,请参阅块 blob 的时间点还原

重要

执行还原操作时,Azure 存储会阻止对在操作期间还原的范围内的 blob 执行数据操作。 读取、写入和删除操作在主位置中被阻止。 出于此原因,在执行还原操作时,Azure 门户中的操作(如列出容器)可能不会按预期执行。

如果存储帐户是异地复制的,则在还原操作期间,从辅助位置读取的操作可以继续。

还原数据集所用的时间取决于选取还原作业最多一小时后在还原期间执行的写入和删除操作的次数。 例如,如果一个帐户有 1 百万个对象,每天增加 3,000 个对象,每天删除 1,000 个对象,将需要大约两三个小时才能还原到过去 30 天的点。 进行少量更改的还原最多需要一小时进行还原。 对于具有此变化率的帐户,不建议在过去保留时间和还原超过90天。

还原帐户中的所有容器

可以还原存储帐户中的所有容器,使其恢复以前某个给定时间点的状态。

要使用 Azure 还原存储帐户中的所有容器和 blob,请执行以下步骤:

  1. 导航到存储帐户的容器列表。

  2. 在工具栏上,选择“还原容器”,然后选择“全部还原”。

  3. 在“还原所有容器”窗格中,通过提供日期和时间来指定还原点。

  4. 选中框,确认想要继续。

  5. 选择“还原”以开始还原操作。

    Screenshot showing how to restore all containers to a specified restore point

还原多个范围的块 blob

可以在单个容器内或跨多个容器还原一个或多个字典范围的 blob,将这些 blob 恢复到它们在以前某个给定时间点的状态。

要使用 Azure 门户还原一个或多个容器中某个范围的 blob,请执行以下步骤:

  1. 导航到存储帐户的容器列表。

  2. 选择要还原的一个或多个容器。

  3. 在工具栏上,选择“还原容器”,然后选择“还原所选容器”。

  4. 在“还原所选容器”窗格中,通过提供日期和时间来指定还原点。

  5. 指定要还原的范围。 可以使用正斜杠 (/) 来分隔容器名称和 blob 前缀。

  6. 默认情况下,“还原所选容器”窗格会指定一个包含容器中所有 blob 的范围。 如果不想还原整个容器,可删除此范围。 默认范围如下图所示。

    Screenshot showing the default blob range to delete before specifying custom range

  7. 选中框,确认想要继续。

  8. 选择“还原”以开始还原操作。

下图显示了对一组范围的还原操作。

Screenshot showing how to restore ranges of blobs in one or more containers

图中所示的还原操作将执行以下操作:

  • 还原 container1 的完整内容。
  • 还原 container2 中 blob1 至 blob5 字典范围的 blob。 例如,此范围将还原以下名称的 blob:blob1、blob11、blob100、blob2,以此类推。 由于不包括范围结束值,所以还原操作会还原名称以 blob4 开头的 blob,但不会还原名称以 blob5 开头的 blob。
  • 还原 container3 和 container4 中的所有 blob。 因为不包括范围结束值,所以此范围不会还原 container5。

后续步骤