AzCopy使用的場景其實非常多,也能幫助我們解決很多問題,這次就來分享兩個不同場景下,AzCopy是如何幫我們解決問題的
首先先來看下兩個場景分别是什麼
1.需要下載下傳存儲在Azure Global上的blob
2.需要在Azure Global和Azure China之間同步blob資料
這兩個都是實際的案例,首先來看第一個
背景是在Azure Global的storage上有一個60T的vhd檔案,這個檔案是第三方廠商公開分享的,任何人都可以直接下載下傳,而不需要經過身份驗證,而我們需要做的就是要把這個放在Global的vhd檔案遷移到中國區,然後再進行部署
我們嘗試了很多種方法
1.直接下載下傳 -- 速度維持在kB級别,極不穩定
2.使用各大網盤和下載下傳工具離線下載下傳 -- 根本下不動
3.使用不可描述的工具科學下載下傳 -- 開始時速度很客觀,但一段時間後速度變為0
4.直接在Global Azure建立一台VM進行下載下傳 -- 速度位置在MB級别,穩定性尚可,但等待一段時間後,下載下傳中斷
以上幾種方法最終都被認定為不可行,最終還是使用AzCopy解決了這個問題
首先我們先安裝好azcopy,然後在中國區建一個storage和container,以存放拷貝來的資料
以上這些都屬于前期準備工作
之後我們就來看如何進行資料的拷貝,首先在源端和目标端都是azure blob的時候,azcopy會有一些限制
必須向每個源 URL 追加一個 SAS 令牌。
如果使用 Azure Active Directory (AD)提供授權憑據,則隻能從目标 URL 中省略 SAS 令牌。
是以,我們的源端必須是用SAS進行認證的,而我們的情況是源端是直接開放的,是以也不需要SAS了
而目标端我們就需要使用Azure AD進行身份驗證了
Azure AD進行身份驗證我們已經說了很多次了,具體如何操作呢,azcopy v10是可以讓使用者進行login的,是以這也就說明我們可以用我們的azure賬戶進行登入,而azure 使用者現在是可以被直接賦予對blob的讀寫權限的,相關的role主要有以下幾個
Storage Blob Data Reader
Storage Blob Data Owner
Storage Blob Data Contributor
概念和正常的role有點類似吧,我們這裡是需要寫入檔案的,是以肯定不能用reader,我們直接assign一個owner的權限
之後我們就開始進行遷移,首先先登入目标端環境
azcopy login --aad-endpoint https://login.partner.microsoftonline.cn
在浏覽器通路這個标紅的url,然後輸入code,整個過程和cli以及linux下的powershell其實是一樣的
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCM581dvRWYoNHLwEzX5xCMx8FesU2cfdGLwATMfRHLGZkRGZkRfJ3bs92YskmNhVTYykVNQJVMRhXVEF1X0hXZ0xiNx8VZ6l2cssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwYDNzUTOwATO1cDNxgTNx8CXyEjMwAjMwIzLcNXZnFWbp9CXvwVbvNmLvR3YxUjL0M3Lc9CX6MHc0RHaiojIsJye.png)
登入完成,我們嘗試list下container裡的内容,可以看到已經能列出相應的内容了
azcopy list https://mxy.blob.core.chinacloudapi.cn/test
之後我們直接使用copy指令将在Global的vhd檔案copy到container裡
azcopy copy https://xxxxx.blob.core.windows.net/release/xxxxx.vhd https://.blob.core.chinacloudapi.cn/sms/sms-connector.vhd
整個過程半小時就完成了,平均速度能達到400-500Mbps
速度之是以可以達到這麼快,是因為AzCopy 使用伺服器到伺服器 api,是以直接在存儲伺服器之間複制資料。 這些複制操作不會使用計算機的網絡帶寬。
再來看第二種場景:
在blob之間同步資料,因為這種同步很可能并不止是一次性同步,很可能之後要定期運作,是以源端和目标端我們都用SAS做身份驗證
關于SAS,這裡篇幅有限就不多贅述了,我們直接生成一個storage級别的SAS
之後使用azcopy sync指令進行同步
azcopy sync 'https://mxxxc.blob.core.windows.net/$web?sv=2019-02-02&ss=bfqt&srt=sco&sp=rwdlacuxxxxxx&st=2020-02-10T03:42:25Z&spr=https,http&sigxxxxxxc%3D' 'https://xxx.blob.core.chinacloudapi.cn/global?sv=2019-02-02&ss=bfqt&srt=sco&xxxxx5:59Z&st=2020-02-10T04:35:59Z&spr=https,http&sigxxxxxx3D' --recursive --s2s-preserve-access-tier=false
可以在目标端看到資料已經過來了
之後我們在源端上傳一個新檔案
再次運作指令,可以看到這次隻同步了一個檔案
通過這種方法,很快就可以把gloabl的資料同步到中國區,并且安全性也可以得到保障
以上就是azcopy使用的兩個案例