如何通过AWS CLI从S3指定目录下载特定类型文件且排除子目录?
AWS CLI S3下载问题解答
一、单条命令下载指定目录的特定类型文件(忽略子目录)
可以通过精准调整exclude/include规则实现,用一条命令只拉取存储桶根目录下的目标类型文件,完全忽略子目录:
aws s3 cp s3://mybucket/ myfolder/ --exclude '*' --include '*.jpg' --exclude '*/*' --recursive
规则解析
--exclude '*':先默认排除所有内容--include '*.jpg':仅保留根目录下的.jpg文件--exclude '*/*':排除任何包含路径分隔符的内容(也就是所有子目录里的文件/文件夹)- 必须保留
--recursive:没有这个参数CLI不会遍历目录,但配合上面的规则只会处理根目录的目标文件
二、移除--recursive参数报错的原因
当你去掉--recursive时,AWS CLI会把s3://mybucket当成**单个具体对象(文件)**来处理,而不是存储桶目录。但s3://mybucket本身是存储桶的根路径,不是一个实际存在的对象,所以CLI调用HeadObject接口查询这个"对象"时,就会返回404不存在的错误。
如果不想用--recursive,必须明确指定具体的单个文件,比如:
aws s3 cp s3://mybucket/image.jpg myfolder/
内容的提问来源于stack exchange,提问作者KVSEA
相关产品推荐
相关产品推荐

