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

copying files between s3 buckets without folders amazon 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

我是漏掉了什么还是不可能的? 你知道我该怎么做吗?

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

aws s3 sync s3://originbucket /localdir/

Post这个,用find命令把所有文件放到一个目录下

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

终于可以再次上传文件到s3了!

aws s3 sync /anotherlocaldir/ s3://destinationbucket

您不需要像另一个答案中建议的那样在本地下载文件。相反,您可以编写 shell 脚本或执行以下操作的内容:

  • 运行 lss3://bucket1 上获取其中所有文件的 fully-qualified 名称。
  • 对于每个文件,运行 cp 将其从当前位置复制到 s3://bucket2/x/

这里有一些例子供您参考:

aws s3 同步 /a/b/c/1.pg s3://bucketname/

aws s3 同步 /a/2.jpg s3://bucketname/

aws s3 同步 /a/b/3.jpg s3://bucketname/

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

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

AWS 参考资料 url:http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html