AWS S3 CLI递归上传自动创建文件夹 如何让文件存至桶根目录
问题原因
aws s3 cp 递归上传的路径规则是:如果传入的源目录路径末尾不带斜杠,CLI会把目录名本身作为S3对象键的前缀,相当于把整个www文件夹整体上传到桶里,最终所有文件自然都会落在自动生成的www/嵌套路径下,和你遇到的现象完全匹配。
解决方法
给源目录路径末尾加上斜杠,明确告诉CLI你要上传的是www目录内部的所有内容,而不是目录本身,修改后的命令:
aws s3 cp --recursive --acl public-read ./www/ s3://my_bucket123
执行后所有静态文件会直接存到存储桶根目录,不会额外生成www文件夹。
避坑技巧
正式上传前可以加--dryrun参数做模拟执行,预览所有文件上传后的完整S3路径,确认没有多余的前缀后再去掉参数正式上传,避免传错位置需要返工:
aws s3 cp --recursive --acl public-read ./www/ s3://my_bucket123 --dryrun
只要模拟输出的对象路径前没有多余的www/层级,就说明路径配置正确。
- 你当前使用的是WSL类Unix环境,上述末尾加正斜杠的写法可以直接生效;如果后续切换到Windows原生CMD操作,把源路径改成末尾带反斜杠的
.\www\即可。
内容的提问来源于stack exchange,提问作者Abdulaziz omar
相关产品推荐
相关产品推荐

