移动或重命名时能否保留 blob 版本?
Can blob versions be retained while moving or renaming?
我正在为 Azure 存储和 Blob 存储中的启用版本使用最新的 .NET SDK。我可以使用我的 C# 代码上传、列出所有版本的 blob。我想在移动或重命名的情况下维护版本。有可能自动做这样的事情吗?如果没有,是否有任何可能有帮助的解决方法?
Azure blob 支持 blob versioning natively, you can enable it by following this doc。
您还可以通过 creating Blob snapshots 维护旧的 blob 版本。
如果您使用的是 .NET SDK,this official doc 可能会有所帮助。
使用文档解决了这个问题。以下是我的代码片段:
var files = blobContainerClient.GetBlobs(BlobTraits.Metadata, BlobStates.Version, prefix: prefix);
foreach (BlobItem file in files)
{
var versionFile = blobContainerClient.GetBlobClient(file.Path).WithVersion(file.versionId);
if (file != null)
{
string newFileName = file.Name.Split("/").Last();
string newPath = $"{destFolderPath}/{newFileName}";
BlobClient newFile = rootDir.GetBlobClient(newPath);
await newFile.StartCopyFromUriAsync(file.Uri);
fileCount++;
if (file == files.Last())
{
var rootFile = blobContainerClient.GetBlobClient(file.Path);
rootFile.DeleteIfExists();
}
}
}
在这里删除了一些项目特定的代码,所以任何想要使用它的人,请初始化适当的 类。
我正在为 Azure 存储和 Blob 存储中的启用版本使用最新的 .NET SDK。我可以使用我的 C# 代码上传、列出所有版本的 blob。我想在移动或重命名的情况下维护版本。有可能自动做这样的事情吗?如果没有,是否有任何可能有帮助的解决方法?
Azure blob 支持 blob versioning natively, you can enable it by following this doc。
您还可以通过 creating Blob snapshots 维护旧的 blob 版本。 如果您使用的是 .NET SDK,this official doc 可能会有所帮助。
使用文档解决了这个问题。以下是我的代码片段:
var files = blobContainerClient.GetBlobs(BlobTraits.Metadata, BlobStates.Version, prefix: prefix);
foreach (BlobItem file in files)
{
var versionFile = blobContainerClient.GetBlobClient(file.Path).WithVersion(file.versionId);
if (file != null)
{
string newFileName = file.Name.Split("/").Last();
string newPath = $"{destFolderPath}/{newFileName}";
BlobClient newFile = rootDir.GetBlobClient(newPath);
await newFile.StartCopyFromUriAsync(file.Uri);
fileCount++;
if (file == files.Last())
{
var rootFile = blobContainerClient.GetBlobClient(file.Path);
rootFile.DeleteIfExists();
}
}
}
在这里删除了一些项目特定的代码,所以任何想要使用它的人,请初始化适当的 类。