在上一篇中,咱們介紹瞭如何使用雲存儲服務代替傳統的共享存儲設備。若是咱們大量的使用了雲存儲服務,就不可避免的要在多個雲存儲服務之間複製、共享、遷移或者同步數據。這裏說的多個雲存儲服務包括跨不一樣供應商的雲存儲服務。html
首先咱們來看一下Azure的存儲服務。git
每個存儲帳號中能夠建立一個或者多個容器(Container),可是Container的層級只有一層。存放在Azure存儲服務中的每個文件都對應一個惟一的URL地址,包括虛擬機的系統盤和數據盤都是以.vhd文件的形式存放在存儲帳號的容器裏面的。github
Azure支持在存儲帳號之間進行Server to Server的數據複製,即:要複製的文件不會通過發出複製命令的計算機進行中轉,不管source和destination是否在同一個數據中心,甚至能夠在Azure中國版和Azure國際版的存儲服務之間直接進行數據複製!我試過從Azure東亞或者東南亞的數據中心往Azure中國的北京數據中心複製文件,速度一般能夠輕鬆達到60~100Mbps!除了正常的業務數據遷移,我常常用這個方法從Azure國際版往Azure中國版上搬鏡像,或者在Azure國際版上下載大型軟件安裝包(就像SAP這種動輒10幾20幾個GB的)而後再搬回國內使用。windows
附上從Azure國際版往Azure中國版複製文件的示例命令和參數:api
azcopy /source:https://[存儲帳號名稱].blob.core.windows.net/[容器名稱] /sourcekey:[主訪問密鑰] /dest:https://[存儲帳號名稱].blob.core.chinacloudapi.cn/[容器名稱] /destkey:[主訪問密鑰] /pattern:[文件名]
接下來咱們再看一下AWS的存儲服務。網絡
AWS S3可謂是公有云存儲服務的鼻祖,其API基本上已經成爲業界事實上的標準,一批後來者都或多或少的借鑑了AWS S3的設計和實現思路。工具
AWS S3只是一個對象存儲服務,雖然不像Azure的存儲服務那樣一應俱全(blob,table,queue...),可是足夠精專。AWS S3也沒有被用於存放虛擬機的磁盤文件。經過使用AWS CLI,咱們能夠在不一樣的bucket之間複製文件,其複製過程也是Server to Server模式的。可是咱們沒法在AWS國際版的bucket和AWS中國版的bucket之間進行Server to Server的文件複製。究其緣由,我的認爲主要是由於AWS S3沒有爲bucket提供獨立的Access Key,而AWS中國版和AWS國際版的endpoint與IAM也是徹底獨立的,而且AWS CLI也不支持在同一條命令中使用兩個不一樣的credential和endpoint。spa
AWS S3在bucket級別提供了跨區域複製同步,可是所能跨的區域只是國際版的區域,不包括中國區。另外,在AWS中國版的EC2上訪問AWS國際版S3上的文件,其傳輸速度和普通的家用、商用網絡沒有任何區別——都是忽快忽慢,並且還常常出現超時、沒法訪問的狀況。不過AWS中國版和Azure中國版、AWS國際版和Azure國際版之間的互訪速度仍是很是快的。.net
經過上述介紹,咱們不可貴出這樣一個結論,在AWS S3和Azure存儲服務之間遷移(複製)數據,也只能是先從一方下載,再上傳到另外一方了。的確這是一個沒有什麼太多技術含量的實現方案,可是經過一些最佳實踐和技巧,再配合適當的輔助工具,對數據遷移質量和效率而言,仍是有很大提高空間的。命令行
這裏推薦一個在Azure存儲服務和AWS S3之間作數據遷移的開源工具:AzureCopy,這是一個C#寫的工具,並且已經提交到NuGet庫中。源代碼在GitHub上。除了做爲普通的命令行來使用,還能夠在本身開發的項目中調用相關的功能。老規矩,咱們首先要作的就是讓它支持AWS中國版和Azure中國版。這裏不得不吐槽一下Azure SDK的設計仍是欠點火候的——一樣是.net/C#的SDK,我只添加了一行代碼,AzureCopy就能支持AWS中國版了,而支持Azure中國版卻修改了好幾個方法,同時還花了一兩個小時的時間來進行調試!
修改完成,咱們就可使用以下的命令在Azure中國版和AWS中國版之間複製文件啦(credential是寫在配置文件中的):
.\azurecopy.exe -i https://xhttestsa1.blob.core.chinacloudapi.cn/myc-1/music-1.mp3 -o https://s3.cn-north-1.amazonaws.com.cn/test-pub/
須要注意的是:AzureCopy也是須要在本地進行文件中轉的。因此若是要複製大型文件,請在Azure或者AWS的虛擬機上使用這個工具。