如何使用一些简短的方式在PHP中将S3存储桶中一个文件夹的所有文件和文件夹移动到另一个文件夹?

13 浏览
0 Comments

如何使用一些简短的方式在PHP中将S3存储桶中一个文件夹的所有文件和文件夹移动到另一个文件夹?

我需要在php中从一个文件夹或另一个文件夹移动S3存储桶中的所有文件和文件夹。我知道一个方法可以完成相同的操作:

1)从源文件夹中获取所有对象列表。

2)将所有对象复制到目标文件夹中。

3)删除源文件夹中的所有对象。

是否有其他简短的方式可以完成相同的操作。如果有,请与我分享,将不胜感激。提前感谢您。

admin 更改状态以发布 2023年5月24日
0
0 Comments

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

aws s3 mv s3://bucket1/key/to/folder/ s3://bucket2/key/to/folder2 --recursive

0
0 Comments

有没有其他的短方法来完成同样的事情

没有简化的方法来完成这项任务。

原因如下:

文件夹的概念是仅适用于控制台的。Amazon S3使用存储桶和对象,但该服务不原生支持文件夹,也没有提供任何API来处理文件夹。

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

重要

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

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

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

在S3中,实际上不能“移动”文件到另一个“文件夹”中。 它只能通过将每个单独的对象复制一次,将每个对象赋予新的键名称到新的“层次结构”,然后删除原对象来 模拟。 S3甚至不支持重命名单个对象。 改名也是通过复制并使用新名称来完成的,然后删除原来的对象。 控制台似乎支持这些操作,但实际上只是模拟,如上所述。 这是S3设计的有意部分。

0