移动或重命名时能否保留 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();
                    }

                }
            }

在这里删除了一些项目特定的代码,所以任何想要使用它的人,请初始化适当的 类。