使用c#库还原azure blob快照
我正在编写一个CLI实用程序,它可以做很多不同的事情,但我现在正在努力解决的是我有一个已知的blob。对于该blob,我希望恢复为该blob拍摄的快照使用c#库还原azure blob快照,c#,azure,azure-storage-blobs,C#,Azure,Azure Storage Blobs,我正在编写一个CLI实用程序,它可以做很多不同的事情,但我现在正在努力解决的是我有一个已知的blob。对于该blob,我希望恢复为该blob拍摄的快照 await foreach (var snapshot in containerClient.GetBlobsAsync( BlobTraits.All, BlobStates.Snapshots, blobPath)) { _logger.LogInformation($"found blob {sna
await foreach (var snapshot in containerClient.GetBlobsAsync(
BlobTraits.All,
BlobStates.Snapshots,
blobPath))
{
_logger.LogInformation($"found blob {snapshot.Name} - {snapshot.Snapshot}");
if (DecideIfRightSnapshot(snapshot)) {
BlobClient snapshotBlob = containerClient.GetBlobClient(snapshot.Name);
_logger.LogInformation($"found snapshot {snapshotBlob.Uri}");
await sourceBlob.StartCopyFromUriAsync(snapshotBlob.Uri);
}
break;
}
首先,过滤器工作不正常,因为列表中的最后一个blob始终是基本blob。但我可以解决这个问题
我正在努力解决的真正问题是如何使用libs从快照恢复blob?我真的很担心,因为.Uri
函数总是返回基本文件的Uri,即使它是一个快照。我相信URI会是这样的
https://me.blob.core.windows.net/myapp/doc?snapshot=2020-12-16T17:07:44.1076450Z
但这不是要记录的URI。我应该自己构造完整的URI吗
在所有搜索中,他们都将此称为“升级”快照。但是我在API中找不到“升级”方法
我这样做对吗?如果您使用的是新版本的blob storage sdk:,那么您应该自己构造完整的URI。示例代码如下所示:
//other code
await foreach (var snapshot in containerClient.GetBlobsAsync(
BlobTraits.All,
BlobStates.Snapshots,
blobPath))
{
_logger.LogInformation($"found blob {snapshot.Name} - {snapshot.Snapshot}");
if(DecideIfRightSnapshot(snapshot)) {
BlobClient snapshotBlob = containerClient.GetBlobClient(snapshot.Name);
//construct the snapshot url
var snapshot_uri = snapshotBlob.Uri.ToString() + "?snapshot=" + snapshot.Snapshot;
_logger.LogInformation($"found snapshot {snapshot_uri }");
await sourceBlob.StartCopyFromUriAsync(snapshot_uri);
}
break;
}
对于升级,这意味着您可以通过azure门户恢复快照。这是一个UI操作,实际上它调用api。目前sdk中还没有这样的方法
但是,如果您使用的是一些旧的软件包,例如,它有许多方法可以使用快照进行操作,请参阅。注意:不建议使用旧的软件包