Google cloud storage 直接从S3复制到Google云存储

Google cloud storage 直接从S3复制到Google云存储,google-cloud-storage,Google Cloud Storage,我可以使用AWS SDK for Java和Azure SDK for Java将数据从Amazon AWS S3迁移到Azure。现在我想使用Java将数据从Amazon AWS S3迁移到Google云存储。命令行工具支持S3。完成后,您将在~/.boto文件中看到: # To add aws credentials ("s3://" URIs), edit and uncomment the # following two lines: #aws_access_key_id = #aws

我可以使用AWS SDK for Java和Azure SDK for Java将数据从Amazon AWS S3迁移到Azure。现在我想使用Java将数据从Amazon AWS S3迁移到Google云存储。

命令行工具支持S3。完成后,您将在~/.boto文件中看到:

# To add aws credentials ("s3://" URIs), edit and uncomment the
# following two lines:
#aws_access_key_id = 
#aws_secret_access_key = 
使用S3凭据填写
aws\u access\u key\u id
aws\u secret\u access\u key
设置,并取消对变量的注释

一旦设置好,从S3复制到地面军事系统就非常简单:

gsutil cp -R s3://bucketname gs://bucketname
如果有很多对象,请使用
-m
标志运行,以与多个线程并行执行复制:

gsutil -m cp -R s3://bucketname gs://bucketname

使用谷歌云存储


jterrace(aws key and secret in.boto文件)建议的答案是正确的,对我来说适用于许多地区,但不适用于仅需要aws签名版本4的某些地区。例如,在连接到“孟买”地区时,我遇到了以下错误:

BadRequestException:400 InvalidRequest 不支持您提供的授权机制。请使用AWS4-HMAC-SHA256

为了克服这个问题(使gsutil使用AWS签名v4),我必须在~/.boto文件中添加以下额外的行。这些行在配置文件中创建一个新的节[s3]:

[s3]
host=s3.ap-south-1.amazonaws.com
use-sigv4=True

参考资料:


在将文件从本地复制到S3时,如何在gstuil中使用基于概要文件的操作?
rsync
命令是否更适合此用例?如果它确实是一次性的迁移,那么它将是相同的,但是如果它需要多次或持续进行,
rysnc
将节省大量的迁移。注意,我相信这个答案中提到的“configure command”(创建
.boto
文件)是
gcloud init
。我对自己的知识不太自信,所以我不会编辑答案,但我想把它放在那里。@Stephen对不起,自2014年我最初写答案以来,发生了很多变化。我编辑了答案以使其更加清晰。不幸的是,命令行中没有
gsutil transfer
来执行此操作。传输工具很好,但仅限于web,因此不可能编写脚本。或者有人知道如何以编程方式处理传输工具吗?可以编写脚本: