如何将所有文件目录从本地机器移动/复制到 s3 存储桶

时间:2021-01-22 07:49:47

标签: python amazon-web-services amazon-s3

我正在尝试将特定的扩展文件 (.xlsx) 移动/复制到我的 s3 存储桶。

我为此使用了以下命令。

cmd= 'aws s3 cp myfolder/*.xlsx s3://mybucket/myfolder --recursive'

where:
**myfolder** is my local system directory where the file is present

**s3://mybucket/myfolder** : folder location where i am placing all the .xlsx file in s3.

但是当我使用 python 运行这个命令时

os.system(cmd)

Getting Error : 255 

有人可以建议我做任何改变或任何其他方式来实现目标吗?

注意:我已经用我的 s3 键配置了我的系统 cmd,所有命令也都运行良好。

更新:

cmd = '$aws s3 cp myfolder/*.xlsx s3://mybucket/myfolder --recursive'

getting error:1 on interactive python.

1 个答案:

答案 0 :(得分:0)

不支持在命令的路径参数中使用 UNIX 风格的通配符。使用 --exclude--include 过滤器。

aws s3 cp myfolder s3://mybucket/myfolder/ --recursive --exclude "*" --include "*.xlsx"

参数的顺序很重要。

请注意,运行帮助命令 aws s3 help 会带来与以下链接相同的命令参考。 来自AWS docs

<块引用>

目前,不支持使用 UNIX 风格的通配符 命令的路径参数。但是,大多数命令都有 --exclude "<value>"--include "<value>" 参数可以实现 想要的结果。这些参数执行模式匹配 排除或包含特定文件或对象。下面的图案 支持符号。

  • “*”:匹配所有内容
  • "?":匹配任意单个字符
  • "[sequence]":匹配"sequence"中的任意字符
  • "[!sequence]": 匹配任何不在 "sequence" 中的字符
<块引用>

请注意,默认情况下,包含所有文件。这意味着 只提供一个 --include 过滤器不会改变文件是什么 转移。 --include 只会重新包含已被删除的文件 从 --exclude 过滤器中排除。如果您只想上传文件 使用特定扩展名,您需要首先排除所有文件,然后 重新包含具有特定扩展名的文件。