上一篇介紹了AzCopy兩個實際的使用場景,可以說對於azure blob的操作絕對是相當簡便的,但是現在AzCopy已經不僅僅侷限於Azure的操作了,我們還可以用AzCopy把S3的數據遷移過來,這對於像AWS遷移Azure的項目來說絕對是個相當好用的工具,不過目前這個功能還只是preview版本,要注意驗證下遷移的結果再刪除源端的數據
具體的使用方法和blob之間拷貝數據稍有不同,主要在於身份驗證的方式有所區別
若要使用 Azure 存儲授權,請使用 Azure Active Directory (AD)或共享訪問簽名(SAS)令牌。
若要使用 AWS S3 進行授權,請使用 AWS 訪問密鑰和密鑰訪問密鑰
所以S3進行授權的時候是直接用AK/SK做授權的
AWS AK/SK的創建方式這裏就不詳細說了,直接來看下怎麼設置AK/SK來讓azcopy能識別到
AzCopy其實是會直接讀取環境變量裏兩個固定的名稱的,分別是
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
以PowerShell環境舉例,我們可以用以下方法設置環境變量
$env:AWS_ACCESS_KEY_ID="xxx"
$env:AWS_SECRET_ACCESS_KEY="xxxx"
將xxx替換爲實際的值即可,這種方法設置的環境變量都只是臨時變量,關閉PowerShell會話就會消失,這也是比較符合實際情況的,這種非常敏感的信息當然也不適合長時間保存
我們可以使用azcopy env來驗證下是否可以正確讀取到環境變量
只要這裏能讀取出來數值,就代表環境變量的設置沒有問題了
目標端Azure我們就直接使用Azure AD驗證了,具體的操作步驟就不多說了
下邊來看下如何進行S3的遷移,AzCopy可以支持很多種S3對象,包括以下等
對象
目錄
bucket
多個bucket
語法基本是差不多的,主要來看下對象和目錄的遷移
對象遷移
Azcopy copy 'https://xxx.s3.cn-north-1.amazonaws.com.cn/CBB_EC2AMAZ-R566F8E/CBB_Cloud/obs2s3000001/haozip_v5.9.8.exe' 'https://xxx.blob.core.chinacloudapi.cn/aws/haozip_froms3.exe'
這裏如果出現下邊的報錯,就證明是環境變量的設置有問題
正常輸出的結果如下:
在blob裏馬上就可以看到數據了
整體語法和blob之間進行操作還是很一致的
目錄遷移
目錄的遷移和blob遷移目錄基本也是一樣的,只需要加一個額外的參數即可
Azcopy copy 'https://xxx.s3.cn-north-1.amazonaws.com.cn/CBB_EC2AMAZ-R566F8E/CBB_Cloud/obs2s3000001/15090887278028_sow.exe%24' 'https://xxx.blob.core.chinacloudapi.cn/aws/' --recursive=true
可以看到整個目錄都遷過來了!
依次類推,還可以遷移整個bucket,這對於遷移來說就太方便了