我可以使用AWS SDK for Java和Azure SDk for Java将数据从Amazon AWS S3迁移到Azure。现在,我想使用Java将数据从Amazon AWS S3迁移到Google云端存储。
答案 0 :(得分:22)
gsutil命令行工具支持S3。运行configure命令后,您将在〜/ .boto文件中看到:
# To add aws credentials ("s3://" URIs), edit and uncomment the
# following two lines:
#aws_access_key_id =
#aws_secret_access_key =
使用您的S3凭据填写aws_access_key_id
和aws_secret_access_key
设置,并取消注释变量。
设置完毕后,从S3复制到GCS就像以下一样简单:
gsutil cp -R s3://bucketname gs://bucketname
如果您有很多对象,请使用-m
标志运行以与多个线程并行执行复制:
gsutil -m cp -R s3://bucketname gs://bucketname
答案 1 :(得分:5)
使用Google云端存储transfer tool。
答案 2 :(得分:1)
jterrace(aws密钥和.boto文件中的秘密)建议的答案是正确的,对我来说适用于许多地区,但不适用于仅需要AWS签名版本4的某些地区。例如,当连接到'孟买'地区时我得到了这个错误:
BadRequestException:400 InvalidRequest 不支持您提供的授权机制。请使用AWS4-HMAC-SHA256
为了克服这个问题(让gsutil使用AWS Signature v4),我不得不在〜/ .boto文件中添加以下附加行。这些行在配置文件中创建一个新的部分[s3]:
<强> [S3]
host = s3.ap-south-1.amazonaws.com
use-sigv4 = True
参考:
Interoperability support for AWS Signature Version 4
Gsutil cannot copy to s3 due to authentication