在没有文件夹amazon aws cli的s3桶之间复制文件

时间:2017-02-06 11:46:24

标签: amazon-web-services amazon-s3 aws-cli

我正在查看aws cli的文档,我找不到将某些目录结构中的唯一文件复制到其他存储桶的方法,其中" flattened"结构(我想要一个目录及其中的所有文件)。

例如

/a/b/c/1.pg
/a/2.jpg
/a/b/3.jpg

我想要在不同的桶中:

/x/1.jpg
/x/2.jpg
/x/3.jpg

我错过了什么或不可能吗? 你知道我怎么能这样做?

3 个答案:

答案 0 :(得分:1)

假设您在系统上配置了aws cli并假设两个存储桶位于同一区域。 您可以做的是首先使用以下命令将s3存储桶下载到本地计算机:

aws s3 sync s3://originbucket /localdir/

发布此内容,使用find命令将所有文件放入一个目录

find /localdir/ -type f -exec mv {} /anotherlocaldir/

最后,您可以再次将文件上传到s3!

aws s3 sync /anotherlocaldir/ s3://destinationbucket

答案 1 :(得分:1)

您不需要在本地下载文件,如另一个答案所示。相反,您可以编写一个shell脚本或执行以下操作的内容:

  • s3://bucket1上运行ls以获取其中所有文件的完全限定名称。
  • 对于每个文件,请运行cp将其从当前位置复制到s3://bucket2/x/

答案 2 :(得分:0)

以下是一些供您参考的示例:

aws s3 sync /a/b/c/1.pg s3:// bucketname /

aws s3 sync /a/2.jpg s3:// bucketname /

aws s3 sync /a/b/3.jpg s3:// bucketname /

要将目录的所有内容同步到S3存储桶:

aws s3 sync / directoryPath / s3:// bucketname /

AWS参考网址:http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html