如何将图像从公共数据库传输到Google Cloud Bucket,而无需在本地下载

时间:2019-03-06 22:31:21

标签: google-cloud-platform google-cloud-storage md5

我有一个csv文件,其中包含超过10,000个指向互联网上图像的URL。我想对他们执行一些机器学习任务。我正在使用Google Cloud Platform基础结构执行此任务。我的首要任务是将所有这些图像从url传输到GCP存储桶,以便以后可以通过docker容器访问它们。

我不想先在本地下载它们,然后再上传它们,因为这太繁琐了,而是直接将它们传输到存储桶中。我查看了Storage Transfer Service,对于我的具体情况,我认为我将使用URL list。谁能帮我弄清楚下一步该怎么做。这甚至可能吗? 如果是,我如何为列表中的每个URL生成一个{5 {3}}提到的MD5,并获取每个URL的图像字节数?

1 个答案:

答案 0 :(得分:2)

如前所述,Storage Transfer Service要求您向其提供每个文件的MD5。幸运的是,许多HTTP服务器可以为您提供对象的MD5,而无需您下载它。发出HTTP HEAD请求可能会导致服务器在响应中为您提供Content-MD5标头,该标头可能不是Storage Transfer服务所需的形式,但可以将其转换为该形式。

这里的缺点是Web服务器不一定要为您提供该信息。没有检查就无法知道。

值得考虑的另一种选择是设置一个或多个GCE实例,然后从那里运行脚本以将对象下载到GCE实例,然后从那里将它们上载到GCS。这仍然涉及“本地”下载它们,但是在本地不再意味着它们脱离了Google Cloud,这将大大加快工作速度。您还可以通过将CSV文件拆分为10个文件(每个文件中每个对象包含1000个对象)并设置10个GCE实例来完成工作,来进行工作划分。