是否将Azure块blob复制到Azure文件共享?

是否将Azure块blob复制到Azure文件共享?,azure,azure-storage-blobs,Azure,Azure Storage Blobs,如何将azure存储中的块(或页)blob复制到azure文件共享? 如果我将块blob下载到本地文件,我的示例代码可以正常工作,但是似乎没有一种方法可以下载到Azure文件共享。我看过Azure数据移动库,但没有关于如何实现这一点的示例 void Main() { string myfile =@"Image267.png"; CredentialEntity backupCredentials = Utils.GetBackupsCredentials(); Clo

如何将azure存储中的块(或页)blob复制到azure文件共享? 如果我将块blob下载到本地文件,我的示例代码可以正常工作,但是似乎没有一种方法可以下载到Azure文件共享。我看过Azure数据移动库,但没有关于如何实现这一点的示例

void Main()
{
    string myfile =@"Image267.png";

    CredentialEntity backupCredentials = Utils.GetBackupsCredentials();
    CloudStorageAccount backupAccount = new CloudStorageAccount(new StorageCredentials(backupCredentials.Name, backupCredentials.Key), true);
    CloudBlobClient backupClient = backupAccount.CreateCloudBlobClient();
    CloudBlobContainer backupContainer = backupClient.GetContainerReference(@"archive");
    CloudBlockBlob blob = backupContainer.GetBlockBlobReference(myfile);

    CredentialEntity fileCredentails = Utils.GetFileCredentials();
    CloudStorageAccount fileAccount = new CloudStorageAccount(new StorageCredentials(fileCredentails.Name,fileCredentails.Key), true);
    CloudFileClient fileClient =    fileAccount.CreateCloudFileClient();
    CloudFileShare share = fileClient.GetShareReference(@"xfer");

    if (share.Exists())
    {
        CloudFileDirectory rootDir = share.GetRootDirectoryReference();
        CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("hello");
        if (sampleDir.Exists())
        {
             CloudFile file = sampleDir.GetFileReference(myfile);
//           blob.DownloadToFile(file.ToString());
        }       
    }
}
不起作用的部分是注释掉的行
blob.DownloadToFile


有什么办法可以做到这一点吗

但是在dot net中有一些样本。一个与代码无关的替代方案是使用它将有助于将数据从blob传输到文件共享,反之亦然

外部建议:
以下名为的工具似乎支持传输,但使用python

但是在dot net中有一些样本。一个与代码无关的替代方案是使用它将有助于将数据从blob传输到文件共享,反之亦然

外部建议:
以下名为的工具似乎支持传输,但使用python

官方文档中有一个例子:它用于将文件从文件共享复制到blob存储,但您可以对从blob存储复制到文件共享进行一些更改。我还编写了一个用于从blob存储复制到文件共享的示例代码,您可以如下所示查看它

您可以使用SAS令牌(用于源blob或源文件)将文件复制到同一存储帐户或不同存储帐户中的blob/或将blob复制到文件

示例代码如下(将blob复制到同一存储帐户中的文件中,如果它们位于不同的存储帐户中,您可以进行一些更改):

static void Main(字符串[]args)
{
CloudStorageAccount-storageAccount=CloudStorageAccount.Parse(“连接字符串”);
var blobClient=storageAccount.CreateCloudBlobClient();
CloudBlobContainer CloudBlobContainer=blobClient.GetContainerReference(“t0201”);
CloudBlockBlob sourceCloudBlockBlob=cloudBlobContainer.getblockblobbreference(“test.txt”);
//请注意,如果文件共享位于不同的存储帐户中,则应使用CloudStorageAccount storageAccount2=CloudStorageAccount.Parse(“其他存储连接字符串”),然后使用storageAccount2进行文件共享。
CloudFileClient fileClient=storageAccount.CreateCloudFileClient();
CloudFileShare=fileClient.GetShareReference(“testfolder”);
CloudFile destFile=share.GetRootDirectoryReference().GetFileReference(“test.txt”);
//为源blob创建SAS
字符串blobSas=sourceCloudBlockBlob.GetSharedAccessSignature(新的SharedAccessBlobPolicy()
{
权限=SharedAccessBlobPermissions.Read,
SharedAccessExpiryTime=DateTime.UtcNow.AddHours(24)
});
Uri blobSasUri=新Uri(sourceCloudBlockBlob.StorageUri.PrimaryUri.ToString()+blobSas);
destFile.StartCopy(blobSasUri);
Console.WriteLine(“现在完成”);
Console.ReadLine();
}

它在我这边运行得很好,希望能有所帮助。

官方文档中有一个例子:它用于将文件从文件共享复制到blob存储,但您可以对从blob存储复制到文件共享进行一些更改。我还编写了一个用于从blob存储复制到文件共享的示例代码,您可以如下所示查看它

您可以使用SAS令牌(用于源blob或源文件)将文件复制到同一存储帐户或不同存储帐户中的blob/或将blob复制到文件

示例代码如下(将blob复制到同一存储帐户中的文件中,如果它们位于不同的存储帐户中,您可以进行一些更改):

static void Main(字符串[]args)
{
CloudStorageAccount-storageAccount=CloudStorageAccount.Parse(“连接字符串”);
var blobClient=storageAccount.CreateCloudBlobClient();
CloudBlobContainer CloudBlobContainer=blobClient.GetContainerReference(“t0201”);
CloudBlockBlob sourceCloudBlockBlob=cloudBlobContainer.getblockblobbreference(“test.txt”);
//请注意,如果文件共享位于不同的存储帐户中,则应使用CloudStorageAccount storageAccount2=CloudStorageAccount.Parse(“其他存储连接字符串”),然后使用storageAccount2进行文件共享。
CloudFileClient fileClient=storageAccount.CreateCloudFileClient();
CloudFileShare=fileClient.GetShareReference(“testfolder”);
CloudFile destFile=share.GetRootDirectoryReference().GetFileReference(“test.txt”);
//为源blob创建SAS
字符串blobSas=sourceCloudBlockBlob.GetSharedAccessSignature(新的SharedAccessBlobPolicy()
{
权限=SharedAccessBlobPermissions.Read,
SharedAccessExpiryTime=DateTime.UtcNow.AddHours(24)
});
Uri blobSasUri=新Uri(sourceCloudBlockBlob.StorageUri.PrimaryUri.ToString()+blobSas);
destFile.StartCopy(blobSasUri);
Console.WriteLine(“现在完成”);
Console.ReadLine();
}

在我这边效果很好,希望能有所帮助。

谢谢伊万,这对我很有效。我缺少的一点是在源blob上创建SAS。我还需要在第二次复制时将文件复制回blob,原因是为了将Azure中的存档层设置为“存档”。@Dave,因为它可以将blob复制到文件共享,请你把它标为答案好吗?谢谢至于另一个问题,你能提出一个新问题,让我知道链接吗?谢谢。很抱歉,我以为我已经记下了答案。好了,干杯。谢谢伊万,这对我很有用。我缺少的一点是在源blob上创建SAS。我还需要在第二次复制时将文件复制回blob,原因是为了将Azure中的存档层设置为“存档”。@Dave,因为它可以将blob复制到文件共享,请你把它标为答案好吗?谢谢至于另一个问题,你能提出吗