有办法做到这一点吗?
我在很少的服务器和Amazon s3存储上有大量文件,需要从应用程序(Java / Ruby)上传到Azure
我不想在我的应用服务器上下载这些文件,然后将其上传到Azure blob存储。
我已经检查了Java和Ruby sdk,似乎根据示例没有直接的方法来实现这一点(意味着我必须首先在我的应用服务器上下载这些文件并将其上传到Azure)
更新: 刚刚在Java SDK中发现了 CloudBlockBlob.startCopy()。 试过它,它基本上是我想要的,而不使用像AzCopy这样的第三方工具。
答案 0 :(得分:1)
正如@EmilyGerner所说,AzCopy是Microsoft的官方工具,而@MatiasQuaranta所说的AzureCopy是GitHub上的第三方工具https://github.com/kpfaulkner/azurecopy。
简单的方法是使用AWS Command Line
和AzCopy
将所有文件从S3复制到本地目录到Azure Blob存储。您可以参考我对其他帖子Migrating from Amazon S3 to Azure Storage (Django web app)的回答。但它仅适用于小型数据存储桶。
另一种有效的方法是使用Amazon S3和Azure Blob Storage for Java的SDK进行编程。根据我的经验,Azure SDK API for Java类似于C#,因此您可以尝试引用Azure Blob Storage Getstarted doc for Java和AWS SDK for Java来关注@GauravMantri示例代码,以便用Java重写代码。
答案 1 :(得分:0)
您有几个选项,大多数是许可的,但我认为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从一个容器传递到另一个容器。