首页 > 解决方案 > 如何在PHP中将所有文件(不使用副本)和文件夹从一个文件夹移动到另一个S3存储桶,不能使用复制功能

问题描述

我必须将所有文件和文件夹从一个文件夹移动到 php 中的另一个 S3 存储桶。我知道做同样事情的方法是:

  1. 从源文件夹中获取所有对象列表
  2. 将所有对象复制到目标文件夹
  3. 从源文件夹中删除所有对象

然后我知道 AWS 没有具有某种层次结构的文件夹,它只是基于存储桶的,但现在有一天可以选择或更新。

我正在使用Amazon S3 PHP 类版本 0.4.0

标签: phpamazon-web-servicesamazon-s3

解决方案


Amazon S3 没有“移动”命令。唯一的选择是复制然后删除

复制命令告诉 S3 复制对象,而不需要任何下载。因此,它快速高效。

虽然 S3 不使用文件夹,但它确实理解prefixes。完整路径是文件名(键)的一部分。因此,例如:

  • 如果你想移动folder1/foo.txtfolder2/foo.txt,那么:
  • 复制folder1/foo.txtfolder2/foo.txt
  • 删除folder1/foo.txt

要将 AWS 与 PHP 结合使用,您应该使用官方的AWS SDK for PHP


推荐阅读