You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AWS CLI仅复制S3中指定子文件夹树到本地?

问题:通过AWS CLI复制S3中指定表的文件夹树到本地

需要将S3存储桶中指定表(table3、table4)的完整文件夹结构复制到本地,存储桶结构如下:

Bucket
  |_folder1
       |_folder2
            |_table1
                 |_DatePartition1
                 |_DatePartition2
            |_table2
                 |_DatePartition1
                 |_DatePartition2
            |_table3
                 |_DatePartition1
                 |_DatePartition2
            |_table4
                 |_DatePartition1
                 |_DatePartition2

尝试了以下命令但均无效,要么报错要么复制全部内容:

aws s3 cp s3://bucketname/folder1/folder2 .  --exclude "*/*" --include "table3*" --recursive

# 或
aws s3 cp s3://bucketname/folder1/folder2 .  --exclude "*" --include "table3*, tabl4*" --recursive
正确配置方案

AWS CLI的exclude/include规则是按参数顺序依次匹配,一旦命中就停止后续判断,且需正确使用通配符:

  • *:匹配当前目录下的任意文件/文件夹名
  • **:匹配当前目录及其所有子目录下的任意内容

正确命令

aws s3 cp s3://bucketname/folder1/folder2 . --recursive --exclude "*" --include "table3/**" --include "table4/**"

命令逻辑说明

  1. --recursive:必须添加,开启递归遍历子目录的功能
  2. --exclude "*":先排除目标路径下的所有内容
  3. --include "table3/**":覆盖排除规则,包含table3文件夹及其下所有子目录、文件
  4. --include "table4/**":同样覆盖排除规则,包含table4文件夹及其下所有内容

原命令错误原因

  • 第一个命令:--exclude "*/*"会排除所有二级目录(如table1/DatePartition1),但--include "table3*"仅匹配table3文件夹本身,无法包含其下的子目录,因此无法复制完整结构
  • 第二个命令:--include参数不能用逗号分隔多个规则,需单独设置;且table3*仅匹配table3文件夹名,无法匹配其下子内容,必须用table3/**

内容的提问来源于stack exchange,提问作者adbdkb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 03:23:11