批量下载微软云blob容器到本地(解决内容编码是gzip下载后乱码的问题)

发布时间 2023-06-15 09:24:42作者: 粉色纽扣

问题1(无法解决):

因为要将微软云存储中的数据迁移到其他腾讯云cos中。

但是由于微软云存储每一个blob容器中存在内容编码为gzip的js、css文件。导致在腾讯云上,使用存储迁移功能的时候,从微软云迁移到腾讯云存储的js、css文件都无法完全同步(js、css文件会同步失败)。所以只能先下载到本地,再上传到腾讯云。

如下图:gzip文件编码的文件

 问题二:gzip的文件通过浏览器下载时,不会乱码,但是通过azure  storage  explorer工具下载时,内容编码为gzip的文件都会乱码。

解决:使用azcopy下载。

步骤:

1.下载azcopy10版本 

https://learn.microsoft.com/zh-cn/azure/storage/common/storage-use-azcopy-v10#download-azcopy(azcopy操作文档中有下载链接地址)

2.在微软云---存储账户 生成sas令牌

 

 3.使用命令下载blob容器。

解压下载的azopy,使用powershell,进入到azcopy解压的目录。

 .\azcopy.exe cp "https://yspstores.blob.core.chinacloudapi.cn/<替换为blob容器名>/<替换为生成的sas令牌>" 'c:\abc\' --decompress --recursive=true

https://yspstores.blob.core.chinacloudapi.cn是存储账户的域名。

解释:--decompress:这个参数很关键,下载文件中如果有内容编码为gzip的文件,下载的同时会解压。下载到本地后就不会乱码了

--recursive=true  是递归下载,当容器中有文件夹时,需要加此参数

 

 

注: azcopy的示例,以及所有参数的详解:https://learn.microsoft.com/zh-cn/azure/storage/common/storage-ref-azcopy-copy