批量下载微软云blob容器到本地(解决内容编码是gzip下载后乱码的问题)
问题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