如何用一些简短的方法将所有文件和文件夹从一个文件夹移到php中S3存储桶的另一个文件夹?

Nee*_*hod 5 php amazon-s3 amazon-web-services

我必须将所有文件和文件夹从php中S3存储桶的一个文件夹或另一个文件夹中移出。我知道一种执行相同操作的方法是 -1)从源文件夹获取所有对象列表2)将所有对象复制到目标文件夹3)从源文件夹删除所有对象

还有其他短途方法可以做到这一点。如果是的话,请与我分享,不胜感激,在此先感谢

Mat*_*ton 19

欢迎,来自未来!

亚马逊现在已经提供了这个功能。

选择您的存储桶,然后选中要移动的文件或“文件夹”(仍然是平面结构)旁边的复选框。

现在点击操作下拉列表,然后单击“移动”。

在此输入图像描述


GSt*_*tav 18

我认为你应该尝试使用命令行 API:

aws s3 mv s3://bucket1/key/to/folder/ s3://bucket2/key/to/folder2 --recursive
Run Code Online (Sandbox Code Playgroud)


Mic*_*bot 10

还有其他简短的方法可以做到这一点

没有捷径可做。

原因如下:

文件夹的概念对于控制台是唯一的。Amazon S3使用存储桶和对象,但是该服务本身不支持文件夹,也未提供任何用于处理文件夹的API。

但是,为了帮助您组织数据,Amazon S3控制台支持文件夹的概念。[...]

重要

在Amazon S3中,您创建存储桶并存储对象。该服务不支持您在典型文件系统中看到的任何层次结构。

控制台使用对象键名来导出文件夹层次结构。它使用键名称中的“ /”字符来推断层次结构

http://docs.aws.amazon.com/AmazonS3/latest/UG/about-using-console.html

实际上,无法将文件“移动”到S3中的另一个“文件夹”。只能通过复制每个对象,为每个对象赋予新的“层次结构”新的键名,然后删除原始对象来模拟它。S3甚至不支持重命名单个对象。重命名也可以通过使用新名称进行复制,然后删除原始名称来完成。控制台看上去支持这些操作,但实际上仅是模拟它们,如上所述。这是S3设计的故意部分。

  • 感谢迈克尔让它如此容易理解。:) (2认同)
  • PHP 示例如下:/sf/ask/1482930431/#25471915。此处提供了 AWS CLI 的示例:/sf/ask/1482930431/#35099142。 (2认同)