你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

PageBlobClient.StartCopyIncrementalAsync 方法

定义

StartCopyIncrementalAsync(Uri, String, PageBlobRequestConditions, CancellationToken)操作开始将 sourceUri 页 blob 的快照复制到此页 Blob。 复制快照,以便仅将以前复制快照之间的差异更改传输到目标。 复制的快照是原始快照的完整副本,可以像往常一样从中读取或复制。 可以检查Azure.Storage.Blobs.Models.BlobProperties.CopyStatusGetPropertiesAsync(BlobRequestConditions, CancellationToken) 返回的 ,以确定复制是否已完成。

有关详细信息,请参阅 增量复制 Blob 使用增量快照备份 Azure 非托管 VM 磁盘

public virtual System.Threading.Tasks.Task<Azure.Storage.Blobs.Models.CopyFromUriOperation> StartCopyIncrementalAsync (Uri sourceUri, string snapshot, Azure.Storage.Blobs.Models.PageBlobRequestConditions conditions = default, System.Threading.CancellationToken cancellationToken = default);
abstract member StartCopyIncrementalAsync : Uri * string * Azure.Storage.Blobs.Models.PageBlobRequestConditions * System.Threading.CancellationToken -> System.Threading.Tasks.Task<Azure.Storage.Blobs.Models.CopyFromUriOperation>
override this.StartCopyIncrementalAsync : Uri * string * Azure.Storage.Blobs.Models.PageBlobRequestConditions * System.Threading.CancellationToken -> System.Threading.Tasks.Task<Azure.Storage.Blobs.Models.CopyFromUriOperation>
Public Overridable Function StartCopyIncrementalAsync (sourceUri As Uri, snapshot As String, Optional conditions As PageBlobRequestConditions = Nothing, Optional cancellationToken As CancellationToken = Nothing) As Task(Of CopyFromUriOperation)

参数

sourceUri
Uri

将源页 Blob 的 指定为 Uri 最长 2 KB 的长度。 源 Blob 必须是公共的,或者必须通过共享访问签名进行身份验证。

snapshot
String

要从 sourceUri 开始复制的快照的名称。

conditions
PageBlobRequestConditions

可选 PageBlobRequestConditions ,用于将增量副本上的条件添加到此页 Blob 中。

cancellationToken
CancellationToken

可选 CancellationToken ,用于传播应取消操作的通知。

返回

描述 CopyFromUriOperation 增量复制操作的状态的 。

注解

RequestFailedException如果发生故障,将引发 。

增量复制的目标必须不存在,或者必须已使用来自同一源 Blob 的先前增量副本创建。 创建后,目标 Blob 将永久与源关联,并且只能用于增量复制。

GetPropertiesAsync(BlobRequestConditions, CancellationToken)GetBlobsAsync(BlobTraits, BlobStates, String, CancellationToken)GetBlobsByHierarchyAsync(BlobTraits, BlobStates, String, String, CancellationToken) 操作指示 Blob 是否是以这种方式创建的增量复制 Blob。 增量复制 Blob 可能不会直接下载。 唯一受支持的操作是 GetPropertiesAsync(BlobRequestConditions, CancellationToken)StartCopyIncrementalAsync(Uri, String, PageBlobRequestConditions, CancellationToken)DeleteAsync(DeleteSnapshotsOption, BlobRequestConditions, CancellationToken)。 可以像往常一样读取和删除复制的快照。

增量复制在服务上异步执行,必须轮询完成。 可以轮询GetPropertiesAsync(BlobRequestConditions, CancellationToken)和检查Azure.Storage.Blobs.Models.BlobProperties.CopyStatus以确定复制何时完成。 复制完成后,目标 blob 将包含新的快照。 该GetPropertiesAsync(BlobRequestConditions, CancellationToken)操作返回新创建的快照的快照时间。

首次对目标 Blob 执行增量复制时,会使用从源中完全复制的快照创建新的 blob。 每次后续调用 StartCopyIncrementalAsync(Uri, String, PageBlobRequestConditions, CancellationToken) 都会通过仅复制先前复制快照的差异更改来创建一个新的快照。 通过在源 blob 快照发出GetAllPageRangesAsync(GetPageRangesOptions, CancellationToken)调用来计算差异更改,并将 prevSnapshot 设置为最近复制快照。 因此,对 GetAllPageRangesAsync(GetPageRangesOptions, CancellationToken) 的相同限制适用于 StartCopyIncrementalAsync(Uri, String, PageBlobRequestConditions, CancellationToken)。 具体而言,必须按升序复制快照,如果使用 或 Azure.Storage.Blobs.Specialized.BlobBaseClient.StartCopyFromUriAsync(System.Uri,System.Collections.Generic.IDictionary{System.String,System.String},System.Nullable{Azure.Storage.Blobs.Models.AccessTier},Azure.Storage.Blobs.Models.BlobRequestConditions,Azure.Storage.Blobs.Models.BlobRequestConditions,System.Nullable{Azure.Storage.Blobs.Models.RehydratePriority},System.Threading.CancellationToken) 重新创建Azure.Storage.Blobs.Specialized.PageBlobClient.UploadPagesAsync(System.IO.Stream,System.Int64,System.Byte[],Azure.Storage.Blobs.Models.PageBlobRequestConditions,System.IProgress{System.Int64},System.Threading.CancellationToken)源 Blob,则StartCopyIncrementalAsync(Uri, String, PageBlobRequestConditions, CancellationToken)新快照将失败。

复制快照占用的额外存储空间是复制期间传输的差异数据的大小。 这可以通过对快照执行调用来确定,以将其与上一GetAllPageRangesDiffAsync(GetPageRangesDiffOptions, CancellationToken)个快照进行比较。

适用于