Windows Azure Storage (21) 使用AzCopy工具,加快Azure Storage传输速度
《Windows Azure Platform 系列文章目录》
Update 2016-09-28
想要在Azure云端,使用AzCopy工具,从Azure China 上海数据中心存储账户,把文件拷贝到另一个数据中心的存储账户里,速度达到600MB/S
请按照以下方法:
1.在微软云端,创建1台至少8Core的虚拟机。注意AzCopy在执行时是多线程的,Azure云端的虚拟机配置越高,则AzCopy性能越好
2.安装AzCopy
3.在执行AzCopy的时候,加参数 /SyncCopy
请注意:使用/SyncCopy的时候,会把Azure Storage 源地址的存储账号的数据,保存到AzCopy运行的虚拟机的内存里
所以千万不能在本地PC机上,运行AzCopy的时候执行 /SyncCopy,否则拷贝的性能很差
http://azure.microsoft.com/en-us/documentation/articles/storage-use-azcopy/
Update 2015-11-13
应要求,发一下关于Data Movement Library (DML) 的信息。
这个library 包含了AzCopy 核心逻辑,并且已经开源,用户可以比较轻易的集成它到已有的系统中来取得和AzCopy相同的性能,现在你可以从Nuget (http://nuget.org/packages/Microsoft.Azure.Storage.DataMovement 安装,
或是到Github (https://github.com/Azure/azure-storage-net-data-movement )下载源代码,请通过博客查看更多细节ACOM (https://azure.microsoft.com/en-us/blog/introducing-azure-storage-data-movement-library-preview-2/)。
Update 2015-05-26
如果在公司内部,使用代理服务器上网的话,需要修改AzCopy的配置,在AzCopy.exe的相同目录下,新增文件azcopy.exe.config
如果不需要Proxy,config文件配置如下:
<configuration>
<system.net>
<defaultProxy enabled=”false” />
</system.net>
</configuration>
如果需要Proxy,config文件配置如下(在proxyaddress中,输入相应的代理服务器地址)
<configuration>
<system.net>
<defaultProxy>
<proxy
proxyaddress="http://127.0.0.1:8080"
bypassonlocal="true"
/>
</defaultProxy>
</system.net>
</configuration>
参考资料:https://msdn.microsoft.com/en-us/library/aa903360(v=vs.71).aspx
在笔者之前的文档中,已经介绍了管理Azure Storage的常用工具,具体内容请参考:Windows Azure Storage (7) 使用工具管理Windows Azure Storage
文章内容主要分为3大内容:
一.AzCopy命令行工具
二.Azure Blob Browser
三.结合AzCopy,加快Azure Cloud Service部署速度
一.AzCopy命令行工具
这里笔者强烈推荐另外一个工具AzCopy,不同于之前文章中介绍的工具。AzCopy命令行工具,是经过优化的、高性能Azure Storage管理工具,可以管理Azure Blob, File和Table。笔者强烈使用这个工具,因为性能真的非常好。
AzCopy可同时管理Global Azure(windowsazure.com)和国内由世纪互联运维的Azure China。
最新的下载地址是:http://aka.ms/downloadazcopy。我们下载后,直接安装运行。
如果你的操作系统是64位的话,安装路径在%ProgramFiles(x86)%\Microsoft SDKs\Azure\AzCopy。如果你的操作系统是32位的话,安装路径在%ProgramFiles%\Microsoft SDKs\Azure\
我们以管理员身份,运行cmd命令行。通过cd命令,进入到AzCopy.exe所在的目录。简单来说AzCopy的语法如下:
AzCopy /Source:<source> /Dest:<destination> /Pattern:<filepattern> [Options]
感谢QQ群的网友提供信息,如果您的Azure文件名包含空格的话,文件名请用双括号引用。如下:
AzCopy /Source:"<source>" /Dest:"<destination>" /Pattern:<filepattern> [Options]
如果你用国内由世纪互联运维的Azure China:
Storage DNS: https://[yourstorageaccountname].blob.core.windows.net/
接下来,我举几个简单的例子。
1.将本地计算某一文件,拷贝至Azure Storage中
把本地的计算机C盘根目录下的helloworld.txt文件,复制到Azure Blob Storage:https://leizhangstorage.blob.core.windows.net\files这个Container下。
该命令具体如下:
AzCopy /Source:C:\ /Dest:https://leizhangstorage.blob.core.windows.net/files /DestKey:[存储账号的Key] /Pattern:helloworld.txt
注意,如果上面的存储账号没有files这个container,则执行该命令的时候,AzCopy会自动创建该container,但是创建的新的Container的访问属性为Off,即不允许匿名访问
2.将本地计算机某个目录下的所有文件和子目录,递归复制到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中。
3.将本地计算机某个目录下的所有文件,复制到Azure Storage中
假设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 /Source:C:\myfolder /Dest:https://leizhangstorage.blob.core.windows.net/files /DestKey:[存储账号的Key]
注意上面的命令不同于命令3,最后是没有/S的
这样,只有在C:\myfolder根目录下的文件
C:\myfolder\abc.txt
C:\myfolder\abc1.txt
C:\myfolder\abc2.txt
才会被复制到Azure Storage Account下
4.将文件从一个storage account保存至另外一个storage account
假设我将storagefrom中container name为files的文件helloworld.txt,复制到storageto的同样的container name中去,则具体命令如下:
AzCopy /Source:https://storagefrom.blob.core.windows.net/files /Dest:https://storageto.blob.core.windows.net/files /SourceKey:[storagefrom的密钥] /DestKey:[storageto的密钥] /Pattern:helloworld.txt
5.将一个Storage Account某个Container下的所有文件,复制到另外一个Storage Account下。
假设我有一个Storage Account : storagefrom,里面有一个Container Name: public
我需要把上面的Container内容,复制到另外一个Storage Account里:storageto
这里我用的是Azure China的Endpoint:
AzCopy /Source:https://storagefrom.blob.core.chinacloudapi.cn/files /Dest:https://storageto.blob.core.chinacloudapi.cn/files /SourceKey:[storagefrom的密钥] /DestKey:[storageto的密钥] /S
其他命令,请参考Azure MSDN文档:http://azure.microsoft.com/en-us/documentation/articles/storage-use-azcopy/
Update 2015-10-18
测试一下,在Azure China创建一台至少8Core的VM,然后在Azure VM运行AzCopy,从上海的Storage Account将VHD拷贝到北京的Storage Account,速度感人
想要在Azure云端,使用AzCopy工具,从Azure China 上海数据中心存储账户,把文件拷贝到另一个数据中心的存储账户里,速度达到600MB/S
请按照以下方法:
1.在微软云端,创建1台至少8Core的虚拟机。注意AzCopy在执行时是多线程的,Azure云端的虚拟机配置越高,则AzCopy性能越好
2.安装AzCopy
3.在执行AzCopy的时候,加参数 /SyncCopy
请注意:使用/SyncCopy的时候,会把Azure Storage 源地址的存储账号的数据,保存到AzCopy运行的虚拟机的内存里(和Azure VM的硬盘无关)
所以千万不能在本地PC机上,运行AzCopy的时候执行 /SyncCopy,否则拷贝的性能很差
http://azure.microsoft.com/en-us/documentation/articles/storage-use-azcopy/

610.84 MB/S
二.Azure Blob Browser
上面介绍的AzCopy毕竟是命令行工具,如果对命令行工具不熟悉的话,可以使用BlobBrowser。
BlobBrowser是GUI图形界面的工具,背后其实是利用AzCopy命令行工具。
我们安装完BlobBrowser之后,可以在界面上进行配置。如下图:

上图中,我们点击Add,增加新的存储账号信息:
在弹出窗口中,输入以下信息:

上图中,
- Name输入显示名称
- Storage Account Name,输入存储账号名称
- Storage Account Key,输入存储账号的密钥
注意,如果使用国内由世纪互联运维的Azure,需要在上图中,勾选Use China Endpoint。
登录完毕后,UI结构如下,左侧为本地文件目录,右侧为Azure Storage Container

我们点击上图中的Upload就可以上传一个文件或者文件夹了
注意:文件夹默认是递归复制的,也就是把文件夹下的多级目录都上传到Azure Storage中
上传完毕后,点击右侧列表中的文件。右键属性。如下图:

就可以看到这个文件的URL

三.结合AzCopy,加快Azure Cloud Service部署速度
另外还要强烈推荐使用AzCopy,更新Windows Azure Cloud Service。
笔者在之前的项目中,遇到某个合作伙伴的Cloud Service Package文件超过200M。开发团队抱怨使用Visual Studio 2013 Publish Project的时候速度非常慢,经过笔者仔细排查后发现,主要的原因是Visual Studio上传CSPKG和CSDEF的过程是单线程的,上传效率不高。
1.我们首先在Azure Management Portal,创建一个空的Cloud Service,如下图:

2.然后使用上面介绍的AzCopy,将CSPKG和CSDEF文件,复制到Azure Blob中。步骤略
3.然后我们回到Management Portal,找到步骤1中创建LeiPaaS项目,选择Configure,并点击Upload A New Production Deployment。如下图:

4.在弹出的窗口中,PACKAGE和CONFIGURATION都选择From Storage,浏览到我们在步骤2中上传的CSPKG和CSDEF文件。

这样就会极大的加快部署Cloud Service的速度。
本博-三石Blog(下文简称本博),在本博客文章结尾处右下脚未注明转载、来源、出处的作品(内容)均为本博原创,本站对于原创作品内容对其保留版权,请勿随意转载,如若真有需要的朋友可以发Mail联系我;转载本博原创作品(内容)也必须遵循“署名-非商业用途-保持一致”的创作共用协议,请务必以文字链接的形式标明或保留文章原始出处和博客作者(Lei Zhang)的信息,关于本博摄影作品请务必注意保留(www.cnblog.com/threestone)等相关水印版权信息,否则视为侵犯原创版权行为;本博谢绝商业网站转载。版权所有,禁止一切有违中华人民共和国著作权保护法及相关法律和本博(法律)声明的非法及恶意抄袭。
Windows Azure Storage (21) 使用AzCopy工具,加快Azure Storage传输速度的更多相关文章
- windows下通过ping和tracert工具来测试网站访问速度
一.环境 OS: windows 二.步骤 2.1.ping mirrors.163.com Pinging mirrors.163.com [23.111.1.151] with 32 bytes ...
- Azure Tips 第一期: Azure 中的安全监视工具,数据存储, 动态数据屏蔽以及资源部署
# 1 Azure 中的安全监视工具 微软 Azure 云提供以下监控工具,可用于观察操作和检测异常行为. Azure 安全中心 Azure 安全中心是一个统一的基础结构安全管理系统,可以增强数据中心 ...
- Windows Azure入门教学系列 (四):使用Blob Storage
本文将会介绍如何使用Blob Storage.Blob Storage可以看做是云端的文件系统.与桌面操作系统上不同,我们是通过REST API来进行对文件的操作.有关REST API的详细信息,请参 ...
- Azure Storage 系列(七)使用Azure File Storage
一,引言 今天我们开始介绍 Storage 中的最后一个类型的存储----- File Storage(文件存储),Azure File Storage 在云端提供完全托管的文件共享,这些共享项可通过 ...
- Azure Storage 系列(六)使用Azure Queue Storage
一,引言 在之前介绍到 Azure Storage 第一篇文章中就有介绍到 Azure Storage 是 Azure 上提供的一项存储服务,Azure 存储包括 对象.文件.磁盘.队列和表存储.这里 ...
- [SDK2.2]Windows Azure Cloud Service (35) 使用VS2013发布Azure Cloud Service
<Windows Azure Platform 系列文章目录> 好久没有更新BLOG了,今天我们继续Windows Azure相关的内容. 笔者最近把Visual Studio升级到了20 ...
- 通过新的 Azure 媒体服务资源管理器工具管理媒体工作流
Xavier Pouyat Azure 媒体服务高级项目经理 几个月前,一家广播公司找到了我,希望我向他们提供一种图形界面工具,好让他们使用 Azure媒体服务来上传.管理资产并对资产进行编 ...
- instsrv.exe下载和使用方法(微软Windows Server 2003 Resource Kit Tools工具中的一个)
instsrv.exe是微软Windows Server 2003 Resource Kit Tools工具中的一个. Windows Server 2003 Resource Kit Tools是一 ...
- Azure data studio 跨平台数据库管理工具试用
最近折腾 azure sql database 的时候发现了微软的一款新的数据库管理工具: azure data studio.从名字上看 azure data studio 好像是专门为 azure ...
随机推荐
- jquery 回车事件
简单地记下jquery实现回车事件,代码如下: 全局: $(document).keydown(function(e){ if(e.keyCode==13){ $(".login-li in ...
- C# 单例模式
饿汉, 懒汉模式就不说了,下面是IODH模式 static void Main(string[] args) { Singleton s1, s2; s1 = Singleton.getInstanc ...
- switch..case使用
1.多个if...else连在一起使用的时候,可以转为使用更方便的switch结构.switch (XXX) { case "aaa": // ... break; case &q ...
- 【WEB】一个简单的WEB服务器
WEB 服务器如何工作的? HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则.计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从H ...
- Drawing in Singapore
说到画画,其实很多人都会画.只是很多人都把这种潜能给埋起来了,没有特意的去开发出来.且不论画的好与不好,好看与不好看.自己把自己所想的东西方式表达出来,画画是一种方式.我不是科班出身,全凭自己感觉来的 ...
- tcpdump
tcpdump tcp -i eth1 -t -s -c and dst port ! and src net -w ./target.cap (1)tcp: ip icmp arp rarp 和 t ...
- JSPatch 中 defineClass 中覆盖方法的使用
今天研究了一下JSPatch,发现好神奇好奇妙,感觉这几天我都会乐此不彼的去研究这个高大上的东西. 出处来着:https://github.com/bang590/JSPatch 简单介绍一下这个 d ...
- C#委托与事件初探
最近刚刚接触C#,学到事件与委托部分无法理解,于是上网查阅了各种资料,终于明白了一些,在此进行总结. 一.C语言中的函数指针 想要理解什么是委托,就要先理解函数指针的概念.所谓函数指针,就是指向函数的 ...
- Android带边框表格的实现
最近做项目需要用到表格,数据是动态指定的,本来用GridView是很方便的,可是老大不同意用这么重量级的控件,想办法吧. 做表格很容易想到用TableLayout,那就自定义一个来搞. 一.表格最蛋疼 ...
- css选择器万年不变的优先级和权重
我们在使用CSS对网页元素定义样式时经常会遇到这种情况:要对一般元素应用一般样式,然后在更特殊的元素上覆盖它们.那么我们怎么样来保证我们所新定义的元素样式能覆盖目标元素上原有的样式呢? 在CSS中,会 ...