【发布时间】:2019-01-13 13:05:19
【问题描述】:
我想使用 php aws sdk 复制一个具有不同名称的 s3 文件夹。有没有办法做到这一点。我没有任何代码来复制文件夹,而我只获得了单个文件。
【问题讨论】:
标签: amazon-web-services api amazon-s3 copy aws-php-sdk
我想使用 php aws sdk 复制一个具有不同名称的 s3 文件夹。有没有办法做到这一点。我没有任何代码来复制文件夹,而我只获得了单个文件。
【问题讨论】:
标签: amazon-web-services api amazon-s3 copy aws-php-sdk
我不是 PHP 开发人员,但考虑到我使用的 API,您可以 list all files 并使用 copy object,如 PHP SDK 文档 here 和 here 中所述。
对于列表,您可以使用Prefix 参数在您想要的文件夹中设置和列表。
对于复制,您需要查看的参数是ContentSource 和Key。
ContentSource 是“源桶的名称和源对象的键名,用斜杠(/)分隔”。该对象可以是您正在复制的文件夹。 Key 参数是您想要的结果对象的名称。
两者都可以列出所有内容并正确复制。还有更多对您有用的参数,例如列表存储桶上的Delimiter,以便更好地过滤。
如果您可以直接使用AWS CLI,则有两种选择。一种是使用s3 sync 命令或s3 cp。有了它们,您可以使用所需的文件夹名称直接复制,从存储桶到存储桶、本地到存储桶、存储桶到本地。使用cp 命令,使用--recursive 选项循环指定目录或前缀。
【讨论】:
使用CLI,当传递参数--recursive时,下面的cp命令递归地将指定目录下的所有文件复制到指定的桶和前缀,同时使用--exclude参数排除一些文件
aws s3 cp myDir s3://mybucket/ --recursive
请在 PHP SDK 中查找相同
【讨论】:
cp --recursive 命令混合使用列表并在其下复制 aws s3 api,如实现 here。