如何从Azure附加Blob转换为Azure块Blob

rkue9o1l  于 2023-02-05  发布在  其他
关注(0)|答案(5)|浏览(171)

是否将其any any从追加Blob转换为块Blob。
问候C

rbl8hiat

rbl8hiat1#

对于blob转换,我使用

--blob-type=BlockBlob

选项在我的azcopy.exe语句的末尾。到目前为止,它运行良好。
祝你好运!

oxosxuxt

oxosxuxt2#

是否要将其any any从追加Blob转换为块Blob。

一旦已经创建了斑点,其类型就不能改变,并且其只能通过使用适合于该斑点类型的操作来更新,即,将块或块列表写入块斑点,将块附加到附加斑点,以及将页面写入页面斑点。
更多信息请参考此链接:Understanding Block Blobs, Append Blobs, and Page Blobs

ifsvaxew

ifsvaxew3#

是否将其any any从追加Blob转换为块Blob。
不允许在Blob类型之间自动转换。您需要做的是下载Blob,然后将其作为Block Blob重新上载。

31moq8wy

31moq8wy4#

给定:我有源blob,它是附加blob
并且:我必须将源代码作为块blob复制到新的blob容器
当:i使用复制BlobToBlobckBlobContainer函数时
然后:目标容器将具有与源相同的blob,但作为块blob。

public void CopyBlobToBlobckBlobContainer(string sourceBlobName)
    {
        var sourceContainerClient = new BlobContainerClient(sourceConnectionString, BlobContainerName);
        var destinationContainerClient = new BlobContainerClient(destinationConnectionString, OutBlobContainerName);
        destinationContainerClient.CreateIfNotExists();
        
        var sourceBlobClient = sourceContainerClient.GetBlockBlobClient(sourceBlobName);
        var sourceUri = sourceBlobClient.GenerateSasUri(BlobSasPermissions.Read, ExpiryOffset);

        var destBlobClient = destinationContainerClient.GetBlockBlobClient(sourceBlobName);
        var result = destBlobClient.SyncUploadFromUri(sourceUri, overwrite: true);
        var response = result.GetRawResponse();
        if (response.Status != 201) throw new BlobCopyException(response.ReasonPhrase);
    }
fafcakar

fafcakar5#

在azure cli上使用以下命令。

azcopy copy 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<append-or-page-blob-name>' 'https://<storage-account-name>.<blob or dfs>.core.windows.net/<container-name>/<name-of-new-block-blob>' --blob-type BlockBlob --block-blob-tier <destination-tier>

--block-blob-tier参数是可选的。如果省略该参数,则目标Blob将从默认帐户访问层设置推断其层。若要在创建阻止Blob后更改层,请参阅更改Blob的层。

相关问题