Blob 快照
本文由机器翻译。若要查看英语原文,请勾选“英语”复选框。 也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语

Blob 快照

 

Snapshot Blob 操作创建 Blob 的只读快照。

可以按如下方式构建Snapshot Blob请求。 建议使用 HTTPS。myaccount 替换为你的存储帐户名称:

PUT 方法请求 URI

HTTP 版本

https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=snapshot

HTTP/1.1

在针对模拟的存储服务发出请求时,请将模拟器主机名和 BLOB 服务端口指定为 127.0.0.1:10000,后跟模拟的帐户名称:

PUT 方法请求 URI

HTTP 版本

http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=snapshot

HTTP/1.1

有关详细信息,请参阅 用于开发和测试使用 Azure 存储仿真程序

可以在请求 URI 上指定以下附加参数。

参数

说明

timeout

可选。 timeout 参数以秒表示。 有关详细信息,请参阅为 Blob 服务操作设置超时

下表介绍必需的和可选的请求标头。

请求标头

说明

Authorization

必需。 指定身份验证方案、帐户名和签名。 有关详细信息,请参阅Azure 存储服务身份验证

Datex-ms-date

必需。 为请求指定协调世界时 (UTC)。 有关详细信息,请参阅Azure 存储服务身份验证

x-ms-version

对于所有验证的请求是必需的。 指定用于此请求的操作的版本。 有关详细信息,请参阅Azure 存储服务的版本控制

x-ms-meta-name:value

可选。 指定与 Blob 关联的用户定义的名称-值对。 如果未指定名称-值对,则此操作将基本 Blob 元数据复制到快照中。 如果指定了多个名称-值对,则使用指定的元数据创建快照,而不从基本 Blob 中复制元数据。

请注意,从 2009-09-19 版开始,元数据名称必须遵循 C# 标识符的命名规则。 有关更多信息,请参见命名和引用容器、 Blob 和元数据

If-Modified-Since

可选。 一个 DateTime 值。 指定此条件标头,以便仅在指定的日期/时间后修改了 Blob 时才创建 Blob 快照。 如果未修改基本 Blob,BLOB 服务将返回状态代码 412(前提条件失败)。

If-Unmodified-Since

可选。 一个 DateTime 值。 指定此条件标头,以便仅在指定的日期/时间后未修改 Blob 时才创建 Blob 快照。 如果修改了基本 Blob,BLOB 服务将返回状态代码 412(前提条件失败)。

If-Match

可选。 ETag 值。 指定此条件标头的 ETag 值,以便仅在 Blob 的 ETag 值与指定的值匹配时才创建 Blob 快照。 如果值不匹配,BLOB 服务将返回状态代码 412(前提条件失败)。

If-None-Match

可选。 ETag 值。

指定此条件标头的 ETag 值,以便仅在 Blob 的 ETag 值与指定的值不匹配时才创建 Blob 快照。 如果值相同,BLOB 服务将返回状态代码 412(不满足前提条件)。

x-ms-lease-id:<ID>

可选。 如果指定了此标头,只有在符合下面的两个条件时,才会执行此操作:

  • Blob 的租约当前处于活动状态。

  • 在请求中指定的租约 ID 与 Blob 的租约 ID 匹配。

如果指定了此标头并且不符合这两个条件,请求将失败,并且Snapshot Blob 操作失败并返回状态代码 412(前提条件失败)。

x-ms-client-request-id

可选。 提供客户端生成的、具有 1 KB 字符限制的模糊值,启用存储分析日志记录时将在分析日志中记录该值。 强烈建议使用此标头将客户端活动与服务器收到的请求进行关联。 有关详细信息,请参阅 关于存储分析日志记录Azure 日志记录:使用日志跟踪存储请求

此操作还支持仅当满足指定条件时才使用条件头执行操作。 有关详细信息,请参阅为 Blob 服务操作指定条件标头

响应包括 HTTP 状态代码和一组响应标头。

此操作成功后返回状态代码 201(已创建)。

有关状态代码的信息,请参阅状态和错误代码

此操作的响应包括以下标头。 该响应还可能包括其他标准 HTTP 标头。 所有标准标头都符合 HTTP/1.1 协议规范

语法

说明

x-ms-snapshot: <DateTime>

此标头返回唯一地标识此快照的 DateTime 值。 此标头的值指示快照版本,可以在后续请求中使用该值来访问快照。 请注意,该值是不透明的。

ETag

快照的 ETag。 如果请求版本为 2011-08-18 和更高版本,ETag 值将用引号引起来。 请注意,无法写入到快照中,因此,给定快照的 ETag 永远不会改变。 不过,如果在Snaphot Blob 请求中提供了新的元数据,则快照的 ETag 与基本 Blob 的 ETag 不同。 如果在请求中未指定任何元数据,则快照的 ETag 与创建快照时的基本 Blob 的 ETag 相同。

Last-Modified

快照的上次修改时间。 日期格式遵循 RFC 1123。 有关详细信息,请参阅标头中日期/时间值的表示

请注意,无法写入到快照中,因此,给定快照的上次修改时间永远不会改变。 不过,如果在Snaphot Blob 请求中提供了新的元数据,则快照的上次修改时间与基本 Blob 的上次修改时间不同。 如果在请求中未指定任何元数据,则快照的上次修改时间与创建快照时的基本 Blob 的上次修改时间相同。

x-ms-request-id

此标头唯一地标识发出的请求,并且可用于解决请求问题。 有关详细信息,请参阅API 操作故障排除

x-ms-version

指示用于执行请求的 BLOB 服务的版本。 针对 2009-09-19 和更高版本发出的请求将返回此标头。

Date

服务生成的 UTC 日期/时间值指示启动响应的时间。

只有帐户所有者可以调用此操作。

快照提供了只读版本的 Blob。 在创建快照后,可以读取、复制或删除该快照,但无法对其进行修改。

快照提供了一种简便的方法以备份 Blob 数据。 可以调用复制 Blob 以使用快照覆盖基本 Blob,从而将 Blob 恢复为以前的版本。

在创建快照时,BLOB 服务将返回一个 DateTime 值,以便相对于基本 Blob 唯一地标识快照。 你可使用此值来对快照执行其他操作。 请注意,应将该 DateTime 值视为不透明。

该 DateTime 值在 URI 上标识快照。 例如,基本 Blob 及其快照具有类似下面的 URI:

  • 基本 blob: http://myaccount.blob.core.windows.net/mycontainer/myblob

  • 快照: http://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>

请注意,每次调用Snapshot Blob 操作时,将使用唯一的 DateTime 值创建新快照。 Blob 可以支持任意数量的快照。 永远不会覆盖现有的快照,而必须通过调用删除 Blob 并将 x-ms-include-snapshots 标头设置为相应值来显式删除快照。

读取、复制和删除快照

成功的Snapshot Blob 调用将在 x-ms-snapshot 响应标头中返回一个 DateTime 值。 然后,你可使用该 DateTime 值在特定快照版本上执行读取、删除或复制操作。 可以通过在 Blob 名称后面指定 ?snapshot=<DateTime>,调用对快照有效的任何 BLOB 服务操作。

复制 Blob 属性和元数据

在创建 Blob 快照时,以下系统属性将复制到快照中并具有相同的值:

  • Content-Type

  • Content-Encoding

  • Content-Language

  • Content-Length

  • Cache-Control

  • Content-MD5

  • x-ms-blob-sequence-number (for page blobs only)

  • x-ms-blob-committed-block-count (for append blobs only)

  • x-ms-copy-id(2012-02-12 和更高版本)

  • x-ms-copy-status(2012-02-12 和更高版本)

  • x-ms-copy-source(2012-02-12 和更高版本)

  • x-ms-copy-progress(2012-02-12 和更高版本)

  • x-ms-copy-completion-time(2012-02-12 和更高版本)

  • x-ms-copy-status-description(2012-02-12 和更高版本)

如果基本 Blob 是块 Blob,还会将 Blob 的已提交块列表复制到快照中。 不会复制任何未提交的块。

快照 Blob 的大小始终与创建快照时的基本 Blob 相同,因此,快照 Blob 的 Content-Length 标头值与基本 Blob 相同。

可以通过在请求中指定 x-ms-meta-name:value 标头,为快照指定一个或多个新的元数据值。 如果未指定此标头,则将与基本 Blob 关联的元数据复制到快照中。

指定条件标头

可以在请求中指定条件标头,以便仅在符合条件时才创建 Blob 快照。 如果不符合指定的条件,则不会创建快照,并且 BLOB 服务返回状态代码 412(前提条件失败)以及有关不符合的条件的其他错误信息。

创建租用的 Blob 的快照

如果基本 Blob 具有活动租约,只要请求符合以下条件之一,你就可以创建 Blob 快照:

  • 指定了条件 x-ms-lease-id 标头,并且在请求中包含基本 Blob 的活动租约 ID。 此条件指定仅在租约处于活动状态并且指定的租约 ID 与 Blob 的关联租约 ID 匹配时才创建快照。

  • 根本未指定 x-ms-lease-id 标头,此时将忽略排他写入租约。

请注意,不会将与基本 Blob 关联的租约复制到快照中。 不能租用快照。

复制快照

在使用复制 Blob 操作复制基本 Blob 时,不会将基本 Blob 的任何快照复制到目标 Blob 中。 使用副本覆盖目标 Blob 时,与该目标 Blob 关联的所有快照都根据其名称保持不变。

你可以复制快照 Blob 以覆盖基本 Blob,从而恢复以前版本的 Blob。 将会保留快照,但使用可读写的副本覆盖基本 Blob。

System_CAPS_note注意

以这种方式提升快照不会在存储资源上产生额外的费用,因为将在快照和基本 Blob 之间共享块或页面。

高级存储帐户中的快照

就快照来说,Azure 高级存储帐户和标准存储帐户有几项区别:

  • 每个高级存储帐户中的页 blob 的快照的数量被限制为 100。 如果超出该限制,则 Snapshot Blob 操作将返回错误代码 409 (SnapshotCountExceeded)。

  • 每十分钟可抓取一次高级存储帐户中页 blob 的快照。 如果超出该频率,则Snapshot Blob 操作将返回错误代码 409 (SnaphotOperationRateExceeded)。

  • 不支持通过 获取 Blob 在高级存储帐户中读取页 blob 的快照。 针对高级存储帐户中的快照调用 Get Blob 将返回错误代码 400(无效操作)。 不过,针对快照调用 获取 Blob 属性获取 Blob 元数据 不受支持。

    若要读取快照,你可以使用 复制 Blob 操作将快照复制到帐户中的另一个页 blob。 复制操作的目标 blob 不能有任何现有的快照。 如果目标 blob 有快照,则 Copy Blob 会返回错误代码 409 (SnapshotsPresent)。

有关针对 Azure 高级存储资源调用 REST 操作的详细信息,请参阅使用 Azure 高级版存储的 Blob 服务操作

显示:
© 2016 Microsoft