was s3 cp - 使用 awscli 仅复制特定子文件夹树

问题描述 投票:0回答:1

我只想将某些子文件夹树从 S3 复制到本地磁盘。我们为数据库中的每个表都有多个 jdbc 源连接器和一个 S3 接收器连接器。我只想将某些表的文件树从 S3 复制到本地磁盘。

结构是

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

在上述情况下,我只想复制table3和table4下的整个结构。

我尝试了包含和排除的不同组合,但这不起作用。

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

OR

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

还有其他一些,但没有一个起作用。他们要么给我错误,要么复制所有内容,而不仅仅是特定的文件夹树。

如何设置我的

exclude
include
以便我只能将特定文件夹结构复制到本地磁盘?

amazon-s3 aws-cli directory-structure cp
1个回答
0
投票

虽然文档只提到从本地系统到S3的操作,但字里行间的一些阅读表明过滤器对任何指定的公共前缀之后的部分键进行操作。

换句话说,您需要像在第二个示例中尝试那样指定附加前缀,但是,过滤器不支持复杂的操作,因此您需要堆叠它们:

aws s3 cp s3://example/folder1/folder2/ . \
  --exclude="*" \
  --include="table1/*" \
  --include="table2/*" \
  --recursive

请注意在此示例中使用

\
,以使其更易于阅读和理解。如果在 Windows 上运行此命令,您需要删除每行末尾的
\
并将其设为一行命令。

© www.soinside.com 2019 - 2024. All rights reserved.