Azure Lei Zhang的博客

weibo: LeiZhang的微博/QQ: 185165016/QQ群:319036205/邮箱:leizhang1984@outlook.com/TeL:139-161-22926

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  489 随笔 :: 0 文章 :: 417 评论 :: 70万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

  《Windows Azure Platform 系列文章目录

 

  熟悉Azure平台的读者都知道,Azure Blob有三层架构。如下图:(注意blob.core.chinacloudapi.net是Azure China的Service Endpoint)

  

  1.Blob Name: 存储账号名称

  2.Container Name,容器名称。概念上类似于文件夹

  3.Blob Name:文件名称

  

  Azure Storage Block Blob概念上类似网盘,用户可以把文件、图片、照片直接保存到Azure Block Blob中。

  相比传统的文件系统目录,Azure Block Blob只有一层结构,即Container/BlobName。Azure Block Blob不支持多级目录。

  假设客户的软件架构要求支持多级目录的话,迁移到Azure Block Blob就会遇到一些文件。如下图:

        

  qq.png这个文件的系统全目录是:D:\1\2\3\qq.png

  

   而我们还有一个同样的文件名qq.png,他的目录如下:

   

  与上面的qq.png的文件名是相同的,但是文件目录是不同的。

 

 

 

  遇到这种情况,我们有两种解决方案:

  一.使用关系型数据库,创建数据库表,实现多级目录与Azure Storage对应关系

  二.将Azure Blob Name进行重命名

 

 

  这里分别介绍一下这2个解决方案

  一.使用关系型数据库,创建数据库表,实现多级目录与Azure Storage对应关系

  在这种情况下,我们需要准备以下操作

  1.将文件系统的文件进行重命名,设置为guid。如111-222-333.jpg

  2.在关系型数据库创建如下表,字段为:

索引 源数据名称 AzureBlob数据名称 AzureBlobAccount AzureBlobContainerName AzureBlobURL
1 myphoto.png 111-222-333.jpg contoso photos https://contoso.blob.core.chinacloudapi.cn/photos/111-222-333.jpg
2 myword.docx AAA-BBB-CCC.docx contoso words https://contoso.blob.core.chinacloudapi.cn/words/AAA-BBB-CCC.docx

   通过把文件系统中的源数据,进行文件名的重命名,并且把重命名后的文件保存到Azure Storage中,以改进Azure Blob只有一层目录。

 

 

  二.直接修改Azure Blob Name,文件名设置为包含\

  这样我们把Blob Name修改为:1/2/3/qq.png和A/B/C/qq.png。修改为文件系统的全路径:

 

  如下面的连接:

  https://leizhangstorage.blob.core.chinacloudapi.cn/share/1/2/3/qq.png

      https://leizhangstorage.blob.core.chinacloudapi.cn/share/A/B/C/qq.png

     

  显示结果如下:

               

 

  这样就可以实现Azure Blob的多级目录了。

 

 

 

  另外如何可以方便的把本地文件夹的文件保存到Azure Storage中呢?这里推荐2种方法:

  1.使用AzCopy

  具体可以参考我之前的博客文章:Windows Azure Storage (21) 使用AzCopy工具,加快Azure Storage传输速度

  

  将本地计算机某个目录下的所有文件和子目录,递归复制到Azure Storage中

  该命令如下:

AzCopy /Source:C:\myfolder /Dest:https://leizhangstorage.blob.core.windows.net/files /DestKey:[存储账号的Key] /S

  注意上面的命令行中,最后的参数是 /S

  假设C:\myfolder下有以下目录:

  C:\myfolder\abc.txt
  C:\myfolder\abc1.txt
  C:\myfolder\abc2.txt
  C:\myfolder\subfolder\a.txt
  C:\myfolder\subfolder\abcd.txt

  则执行上述AzCopy命令后,上面所有5个文件都会被复制到Azure Storage中。

  

  

  2.使用Blob Browser

  上面介绍的AzCopy毕竟是命令行工具,如果对命令行工具不熟悉的话,可以使用BlobBrowser

  BlobBrowser是GUI图形界面的工具,背后其实是利用AzCopy命令行工具。

  我们安装完BlobBrowser之后,可以在界面上进行配置。如下图:

  

  上图中,我们点击Add,增加新的存储账号信息:

  在弹出窗口中,输入以下信息:

  

  上图中,

  -  Name输入显示名称

  -  Storage Account Name,输入存储账号名称

  -  Storage Account Key,输入存储账号的密钥

  注意,如果使用国内由世纪互联运维的Azure,需要在上图中,勾选Use China Endpoint。

  这样就可以使用Blob Browser的图形界面,来管理并上传下载Azure Storage Account了。

 

posted on   Lei Zhang的博客  阅读(2098)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示