Google cloud storage 直接从S3复制到Google云存储
我可以使用AWS SDK for Java和Azure SDK for Java将数据从Amazon AWS S3迁移到Azure。现在我想使用Java将数据从Amazon AWS S3迁移到Google云存储。命令行工具支持S3。完成后,您将在~/.boto文件中看到: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
# 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,因此不可能编写脚本。或者有人知道如何以编程方式处理传输工具吗?可以编写脚本: