【问题标题】:Azure storage blob upload from url从 url 上传 Azure 存储 blob
【发布时间】:2016-03-07 09:51:31
【问题描述】:

有没有办法做到这一点?

我在少数服务器和 Amazon s3 存储上拥有大量文件,需要从应用程序(Java / Ruby)上传到 Azure

我不希望在我的应用服务器上下载这些文件,然后将其上传到 Azure blob 存储。

我检查了 Java 和 Ruby sdk,根据示例似乎没有直接的方法(意味着我必须先在我的应用服务器上下载这些文件并将其上传到 Azure)

更新: 刚刚在 Java SDK 中发现了 CloudBlockBlob.startCopy()。 试过了,基本上是我想要的,不用像 AzCopy 这样的第三方工具。

【问题讨论】:

  • 我很久以前写过一篇关于在 Azure Blob 容器中复制 S3 存储桶的博文,您可能会发现它很有用:gauravmantri.com/2012/06/15/…。请注意,那里使用的一些功能可能已被弃用,但这篇文章应该让您了解如何实现此功能。
  • 嗨@GauravMantri,谢谢你的帖子,我在谷歌上搜索并在打开这个问题之前找到了你的博客帖子,因为我正在寻找Java中的解决方案。你是对的,该功能几乎已被弃用,但它确实告诉我在哪里寻找。再次感谢您的评论和精彩的博文。
  • 仅供参考:AzCopy 不是第三方工具。它是由 Microsoft 创建和维护的。

标签: java azure azure-storage azure-blob-storage data-migration


【解决方案1】:

您有几个选择,大部分是许可的,但我认为AzureCopy 是您最好的免费选择。您可以查看step by step experience on MSDN Blogs

您只需要两个服务的访问密钥和一个简单的命令:

azurecopy -i https://mybucket.s3-us-west-2.amazonaws.com/ -o https://mystorage.blob.core.windows.net/mycontainer -azurekey %AzureAccountKey% -s3k %AWSAccessKeyID% -s3sk %AWSSecretAccessKeyID% -blobcopy -destblobtype block

您可以将 blob 从一个容器传递到另一个容器。

【讨论】:

  • 感谢您的提示,我已经更新了我的问题。 AzureCopy 并不是我想要的。
【解决方案2】:

正如@EmilyGerner 所说,AzCopy 是微软官方工具,而@MatiasQuaranta 所说的 AzureCopy 是 GitHub https://github.com/kpfaulkner/azurecopy 上的第三方工具。

简单的方法是使用AWS Command LineAzCopy 将所有文件从S3 复制到本地目录到Azure Blob 存储。您可以参考我对另一个线程Migrating from Amazon S3 to Azure Storage (Django web app) 的回答。但它只适用于小数据大小的桶。

另一种有效的方法是使用 Amazon S3 和 Azure Blob Storage for Java 的 SDK 进行编程。根据我的经验,Azure SDK APIs for Java 与 C# 类似,所以你可以尝试参考Azure Blob Storage Getstarted doc for JavaAWS SDK for Java 跟随@GauravMantri 示例代码来重写Java代码。

【讨论】: