Azure CLI下载Azure Storage Container内的所有文件

在某些场景下,客户需要把Azure Storage的某一个container内的内容都下载到本地。当然采用PowerShell可以定时的进行下载的动作,但有时客户的环境是Linux或MacOS,这时需要采用Azure xplate CLI实现这个功能。本文将介绍如何采用Azure CLI实现这个功能。

安装Azure CLI,可以参考:

http://www.cnblogs.com/hengwei/p/5183493.html

http://www.cnblogs.com/hengwei/p/4781332.html

安装完成后,通过Azure的命令显示Storage Account的信息:

azure storage account list

info: Executing command storage account list

+ Getting storage accounts

data: Name Type Label Location Resource Group

data: ------------------------ ------------ ----- ----------- --------------------------

data: hwtest Standard_LRS China East Default-Storage-ChinaEast

info: storage account list command OK

获得Storage Account的Key:

azure storage account keys list hwtest

info: Executing command storage account keys list

+ Getting storage account keys

data: Primary: pBHrx8d+LDAkyHm2ffljPYygsiSBlbdQh8O45iV12BlFvdjI8kXbqtE17PlpCG0pfTU3yaBQUEEuWuM0tIsobw==

data: Secondary: ss2PunnyTve2sT8R3vaNFJTIcYz0ehmJreKKvmcMSEwSuymbLNqnwDqKznW9Kh03EtZl6fIGAufcT3g+c1UWzw==

info: storage account keys list command OK

先将这个Container的权限设置成Public的模式:

azure storage container set --container hwc -p Container -a hwtest –k pBHrx8d+LDAkyHm2ffljPYygsiSBlbdQh8O45iV12BlFvdjI8kXbqtE17PlpCG0pfTU3yaBQUEEuWuM0tIsobw==

info: Executing command storage container set

+ Set container

+ Getting Storage container information

data: {

data: name: ‘hwc‘,

data: metadata: {},

data: etag: ‘"0x8D3351F16611905"‘,

data: lastModified: ‘Sun, 14 Feb 2016 09:13:22 GMT‘,

data: leaseStatus: ‘unlocked‘,

data: leaseState: ‘available‘,

data: requestId: ‘6f3b08c9-0001-0048-7707-675863000000‘,

data: publicAccessLevel: ‘Container‘

data: }

info: storage container set command OK

获得这些信息后,可以通过脚本的方式实现批量文件的下载:

#!/bin/bash

container=hwc
btype=block
storageaccount=hwtest
storagekey=pBHrx8d+LDAkyHm2ffljPYygsiSBlbdQh8O45iV12BlFvdjI8kXbqtE17PlpCG0pfTU3yaBQUEEuWuM0tIsobw==

files=`azure storage blob list -a $storageaccount -k $storagekey $container |awk ‘/BlockBlob/ {print $2}‘`

for file in $files;
do
{
wget https://$storageaccount.blob.core.chinacloudapi.cn/$container/$file
};
done

但这样有一个问题,是需要把整个文件夹变成Public的模式。存在一定的安全隐患。

解决这个问题,可以采用SAS Token的方式实现。

可以通过下面这个脚本进行改进:

#!/bin/bash
container=hwc
btype=block
storageaccount=hwtest
storagekey=pBHrx8d+LDAkyHm2ffljPYygsiSBlbdQh8O45iV12BlFvdjI8kXbqtE17PlpCG0pfTU3yaBQUEEuWuM0tIsobw==
starttime=2016-02-13
endtime=2016-02-15

files=`azure storage blob list -a $storageaccount -k $storagekey $container |awk ‘/BlockBlob/ {print $2}‘`

for file in $files;
do
{
sastokey=`azure storage blob sas create --container $container --blob $file --permissions rwd --start $starttime --expiry $endtime -a $storageaccount -k $storagekey | awk ‘/URL/ {print $5}‘`
wget $sastokey -O $file
};
done
时间: 2024-08-05 07:50:27

Azure CLI下载Azure Storage Container内的所有文件的相关文章

使用Azure CLI创建Linux虚拟机

Azure提供了三种方式创建虚拟机,分别是Azure CLI.Azure PowerShell和Azure门户.本文介绍使用Azure CLI来创建Linux虚拟机. 使用Azure CLI创建Linux虚拟机一共分为以下三步: 1. 以管理员方式打开PowerShell,运行az login命令登录Azure CLI 2. 创建资源组,运行命令: az group create --name XXX --location XXX 3. 创建虚拟机,运行命令:az vm create --res

Azure CLI创建ARM的VM和面向公网的负载均衡

新的Portal管理界面和ARM功能(即IaaS v2).本文将通过Azure CLI命令行的方式在ARM模式下,创建VM和负载均衡. 在ASM模式下,我们经常使用Endpoint和负载均衡SLB的功能.同样在ARM模式下,SLB也是一个非常重要的功能.但在ARM下和ASM的最重要的不同是:LoadBalancer不再是关联到VM上的属性了.就是说,VM可以没有公网IP,可以没有负载均衡对外提供服务. 这种部署模式更加符合企业应用的部署模式.在企业应用中,只有前端的展现层才会有与外部网络的连接,

在Global Azure上用Azure CLI创建ARM的VM和面向公网的负载均衡

在Global的Azure上,新的Portal和ARM已经正式发布.将来传统的portal和ASM将逐渐淡出. China Azure将在今年下半年推出新的Portal管理界面和ARM功能(即IaaS v2).本文将通过Azure CLI命令行的方式在ARM模式下,创建VM和负载均衡. 在ASM模式下,我们经常使用Endpoint和负载均衡SLB的功能.同样在ARM模式下,SLB也是一个非常重要的功能.但在ARM下和ASM的最重要的不同是:LoadBalancer不再是关联到VM上的属性了.就是

静默安装Azure CLI

Azure的CLI目前已经是基于Python的2.0版本.其信息在下面的链接可以找到: https://github.com/Azure/azure-cli 其安装方法可以根据网站上描述的命令实现: curl -L https://aka.ms/InstallAzureCli | bash 但这种安装模式是交互式的,不能实现静默安装. 本文将介绍如何采用expect实现静默安装. 一.说明 根据https://docs.microsoft.com/en-us/cli/azure/install-

安装 Azure CLI

首先安装node 和 npm 的安装 官方推荐v4.4.4长期支持版 1.下载并解压 node-v4.4.4-linux-x64.tar.xz tar -xJf node-v4.4.4-linux-x64.tar.xz 2.移到通用的软件安装目录 /opt/ sudo mv node-v4.4.4-linux-x64 /opt/ 3.安装 npm 和 node 命令到系统命令 sudo ln -s /opt/node-v4.4.4-linux-x64/bin/node /usr/local/bi

Azure CLI (一)如何安装和配置Azure CLI

什么是Azure CLI 快速安装 Azure 命令行界面 (Azure CLI),以便使用一组基于 shell 的开源命令在 Azure 中创建和管理资源. 步骤 1:安装 . 登录https://www.azure.cn/downloads/,下载命令行工具,Azure命令行借口 . 安装下载的程序,Web平台安装程序,选择Microsoft Azure Cross-platform Command Line Tools 步骤 2:启动 . 运行 命令提示符CMD,输入Azure,得到Cur

解决Azure CLI vm quick-create command failed

在安装Azure CLI 之后,迫不及待的想用vm quick-create command 创建一台虚拟机.结果遇到如下图中的错误 从错误提示中可以看出是缺少ssh file导致, 解决办法: ------------------------------------------------------ ssh-keygen \   -t rsa \    -b 2048 \    -C "[email protected]" \    -f ~/.ssh/id_rsa \    -N

Windows Azure HandBook (2) Azure China提供的服务

<Windows Azure Platform 系列文章目录> 对于传统的自建数据中心,从底层的Network,Storage,Servers,Virtualization,中间层的OS,Middleware,Runtime,最上层的Application,Data,都需要企业进行管理.这就好比农村自建房. 对于公有云平台,一般分为三种类型: IaaS, PaaS和SaaS. Microsoft Azure平台属于IaaS和PaaS范畴. 1. IaaS 对于用户来说,底层的Network,

Windows Azure HandBook (6) Azure带宽与Azure Blob云存储

<Windows Azure Platform 系列文章目录> 在笔者这几年Azure售前工作中,经常会遇到客户提同样的问题:Azure 虚拟机的带宽是多少?Azure提供独享带宽吗?这个项目我们需要200兆的独享带宽. 当遇到这种情况的时候,笔者就会问客户:请问您需要独享带宽的目的是什么呢? 客户经常会回答:这个应用需要视频(大文件)的上传下载功能,或者是并发用户数巨大,需要独享带宽来相应更多的Internet请求. 这种情况我表示非常理解,因为我们平时在购买电信宽带的时候,都是购买30M,