2017-07-19 78 views
2

我已经搜索并阅读了很多,但找不到这个问题的答案,所以我认为这是不可能的。有没有办法将S3存储桶中的目录克隆到同一个存储桶中的另一个路径?

我可以将S3存储桶中的路径克隆(或复制)到另一个路径,并让它复制所有子路径和文件?

我见过用S3FS做过类似的事情,但我宁愿不必做那一步。

我从壳尝试并创建目标目录,但里面什么都没有:

aws s3api copy-object --copy-source my-bucket/source/ --key dest/ --bucket my-bucket

+0

你已经有了一个答案,在这里,所以我会做出这样的评论:你使用的命令做的事情没有发生错误是因为你在缺点中创建了该文件夹OLE。它不是容器中的东西 - 它只是一个空名称,在名称末尾有一个斜杠,有助于控制台中的导航。 S3实际上并不拥有*文件夹...控制台只是为了方便而向您显示它们。这就是为什么复制层次结构没有直接操作 - 层次结构是错觉。 –

+0

旧的控制台用户指南比新的更清楚地解释了这个概念:http://docs.aws.amazon.com/AmazonS3/latest/UG/FolderOperations.html –

回答

3

而不是使用copy-object API调用,使用由AWS Command-Line Interface (CLI)提供更好aws s3 cp命令:

aws s3 cp s3://my-bucket/source s3://mybucket/dest --recursive 
+0

如果水桶是本地和跨区域复制(如果目标存储桶位于另一个区域)。 –

+0

谢谢。这也可以用PHP API吗?我一直无法找到它。 – Dubby

+0

否。Amazon S3 API(适用于所有语言)一次只能复制一个对象。 [AWS命令行界面(CLI)](http://aws.amazon.com/cli/)实际上是一个以您的名义调用API的Python程序。 'aws s3 cp'和'aws s3 sync'命令具有附加的编程逻辑,可自动获取文件列表,然后递归复制文件。您可以在PHP中编写类似的逻辑,但不提供给您。 –

相关问题