上一篇介绍了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其实是会直接读取环境变量里两个固定的名称的,分别是

  1. AWS_ACCESS_KEY_ID

  2. AWS_SECRET_ACCESS_KEY

    

    以PowerShell环境举例,我们可以用以下方法设置环境变量

    

    $env:AWS_ACCESS_KEY_ID="xxx"

    $env:AWS_SECRET_ACCESS_KEY="xxxx"

    

    Azure Storage系列之使用AzCopy迁移S3数据_第1张图片


    将xxx替换为实际的值即可,这种方法设置的环境变量都只是临时变量,关闭PowerShell会话就会消失,这也是比较符合实际情况的,这种非常敏感的信息当然也不适合长时间保存


    我们可以使用azcopy env来验证下是否可以正确读取到环境变量


    Azure Storage系列之使用AzCopy迁移S3数据_第2张图片


    只要这里能读取出来数值,就代表环境变量的设置没有问题了


    目标端Azure我们就直接使用Azure AD验证了,具体的操作步骤就不多说了


    下边来看下如何进行S3的迁移,AzCopy可以支持很多种S3对象,包括以下等

  1. 对象

  2. 目录

  3. bucket

  4. 多个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'

    这里如果出现下边的报错,就证明是环境变量的设置有问题

    Azure Storage系列之使用AzCopy迁移S3数据_第3张图片


    正常输出的结果如下:

    Azure Storage系列之使用AzCopy迁移S3数据_第4张图片


    在blob里马上就可以看到数据了

    Azure Storage系列之使用AzCopy迁移S3数据_第5张图片



    整体语法和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

    Azure Storage系列之使用AzCopy迁移S3数据_第6张图片


    可以看到整个目录都迁过来了!

    Azure Storage系列之使用AzCopy迁移S3数据_第7张图片


    依次类推,还可以迁移整个bucket,这对于迁移来说就太方便了