你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
PageBlobClient.StartCopyIncrementalAsync 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
该StartCopyIncrementalAsync(Uri, String, PageBlobRequestConditions, CancellationToken)操作开始将 sourceUri 页 blob 的快照复制到此页 Blob。 复制快照,以便仅将以前复制快照之间的差异更改传输到目标。 复制的快照是原始快照的完整副本,可以像往常一样从中读取或复制。 可以检查Azure.Storage.Blobs.Models.BlobProperties.CopyStatus从 GetPropertiesAsync(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)
参数
- 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)个快照进行比较。