一、背景介绍

        本地有大量文件,规模数量超过50万个,通过Azure网页上传无疑是不现实的且不可靠的。所以如何解决大文件及批量文件上传到Azure blob? 可以使用azcopy来完成这项任务。

        操作环境:ubuntu 22.04 LTS

        前置条件:

        1、预先下载azopy linux安装包,下载链接:        

        使用 AzCopy v10 将数据复制或移到 Azure 存储 | Microsoft Learn

        2、在azure 控制台里面获取 共享访问签名,注意共享访问签名需要明确允许的IP地址(这里我使用的是GLP里面的虚拟服务器的IP地址),而后点击生成SAS和连接字符串。这里获取到共享访问签名,后面会用到,出于隐私保护,我用 azure_sas 来替代(后文使用)

        3、数据集下载获取。 这里我以下载BridgeData数据集为例,下载链接:

              BridgeData (rail-berkeley.github.io)

          tips: 如何在GLP服务器下载大文件数据集?

可以使用wget命令, eg:  nohup sudo wget https://rail.eecs.berkeley.edu/datasets/bridge_release/scripted_raw_6_18.zip    

        请务必使用nohup,否则你会面临前功尽弃的风险(哭)。

二、实现

        Ok, 接下来开始文件的乾坤大挪移技能。

        首先,要解压文件,只有解压的文件才能被使用。

        可以使用命令:

        nohup sudo unzip scripted_raw_6_18.zip

        请务必使用nohup,否则你会面临前功尽弃的风险(反复强调)。

        接下来,就是azcopy登场了。

        最简单的azcopy的使用命令:

         nohup ./azcopy copy  '/opt/dataset/scripted_raw'   'https://{{mystorageaccount}}.blob.core.windows.net/{{mycontainer}}/scripted_raw'  azure_sas

         这里的mystorageaccount 和 mycontainer是你自己在azure blob的账号和容器,可以从azure blob获取; azure_sas就是上文获取到的共享访问签名。

        

OK,一切准备就绪,开始我们的表演,静静等待文件copy到azure吧。

瞧一瞧,半小时搞定了16万个文件,42G文件大小的上传,简直是神器啊,终于取下了我之前痛不欲生的文件上传、失败、再上传、再失败的无限循环痛苦面具啊。

撒花,happy ending.

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐