使用 aws 客户端仅从单个目录复制 s3 文件(非递归)

Use the aws client to copy s3 files from a single directory only (non recursively)

按照这些思路考虑 aws bucket/key 结构

 myBucket/dir1/file1
 myBucket/dir1/file2
 myBucket/dir1/dir2/dir2file1
 myBucket/dir1/dir2/dir2file2

使用时:

 aws s3 cp  --recursive s3://myBucket/dir1/ .

然后我们将dir2file[1,2]连同file[1,2]抄下来。如何只复制后面的文件,不复制子目录下的文件?

回复评论:。我对为每个子目录放置一个 --exclude 不感兴趣,所以这不是

的副本

您可以使用 --exclude 选项排除路径,例如

aws s3 cp s3://myBucket/dir1/ . --recursive --exclude "dir1/dir2/*"

可以使用 aws cli 帮助找到更多选项和示例

aws s3 cp help

据我了解,您想确保复制当前目录中的文件,但不应复制子目录中的任何内容。我想你可以使用类似的东西。

aws s3 cp s3://myBucket/dir1/ . --recursive --exclude "*/*"

这里我们排除了在 "dir1" 之后有路径分隔符的文件。

使用 aws s3 cp 复制文件时无法控制递归深度。 aws s3 ls.

也不支持

因此,如果您不想使用 --exclude--include 选项,我建议您:

  1. 使用不带 --recursive 选项的 aws s3 ls 命令直接列出目录下的文件,仅从输出中提取文件名并将名称保存到文件中。参考这个
  2. 然后编写一个简单的脚本来读取文件名并为每个执行aws s3 cp

或者,您可以使用:

aws s3 cp s3://spaces/dir1/ .  --recursive --exclude "*/*"