在Python中使用Boto将内容从s3存储桶的一条路径递归复制到另一条路径

尼蒂什·阿加瓦尔(Nitish Agarwal)

我找不到使用python中的boto在s3存储桶中将内容从一个内容复制到另一个内容的任何解决方案。

假设存储桶B1包含以下键结构:B1 / x / *我想将所有对象从键(例如B / x / *)递归复制到B / y / *

讨价还价

S3中没有“目录”。那些“ /”分隔符只是对象名称的一部分,这就是为什么boto没有这样的功能。编写脚本来处理它或使用第三方工具。

AWS customerapps显示了提供此类任意目录复制功能的s3browser典型的免费版本仅产生两个线程来移动文件,付费版本则允许您指定更多线程并运行得更快。

或者,您只需编写脚本并使用s3.client.copy_object将文件复制到另一个名称,然后再将其删除。例如

import boto3
s3 = boto3.client("s3")
# list_objects_v2() give more info

more_objects=True
found_token = True
while more_objects :
  if found_token :
    response= s3.list_objects_v2(
      Bucket="mybucket", 
      Prefix="B1/x/",
      Delimiter="/")
  else:   
    response= s3.list_objects_v2(
      Bucket="mybucket",
      ContinuationToken=found_token,
      Prefix="B1/x/",
      Delimiter="/")
  # use copy_object or copy_from
  for source in object_list["Contents"]:
    raw_name = source["Key"].split("/")[-1] 
    new_name = "new_structure/{}".format(raw_name)
    s3.copy_object(
      ....
    )       
    # Now check there is more objects to list
    if "NextContinuationToken" in response:
      found_token = response["NextContinuationToken"]
      more_objects = True
    else:
      more_objects = False

**重要说明**:list_object每个清单最多仅返回1000个键,MaxKey不会更改限制。因此,您必须使用list_objects_v2并检查是否返回了NextContinuationToken,以确保存在更多对象,请重复执行直到用尽为止。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

emberjs对一条路线使用多个路径/ URL

来自分类Dev

使“ linkTo”在两条路径而不是一条路径上处于活动状态

来自分类Dev

如何将值从一条路线传递到另一条路线?

来自分类Dev

如何判断一条路径是否是另一条路径的祖先?

来自分类Dev

SVG路径叠加并动画出另一条路径

来自分类Dev

Sails.js将一条路线重定向到另一条路线

来自分类Dev

Paper.js从一条路径绘制多个平行路径

来自分类Dev

Talend ESB:如何从另一条路线呼叫一条路线?

来自分类Dev

从另一条路线到一条路线的快速调用GET方法

来自分类Dev

如何使用ExpressJS将数据从一条路由传递到另一节点

来自分类Dev

如何将图案和渐变混合到一条路径中?

来自分类Dev

SVG / EPS(向量)如何用另一条路径剪切一条路径?

来自分类Dev

将开放模式作为另一条路线上的一条单独路线

来自分类Dev

如何在Express中将请求主体的数据从一条路径移动到另一条路径

来自分类Dev

将一条路径转发到另一条路径,并将空格转换为连字符

来自分类Dev

如何判断一条路径是否是另一条路径的祖先?

来自分类Dev

进入另一条路线的商店

来自分类Dev

阿帕奇骆驼(Apache Camel),从另一条路线调用一条路线

来自分类Dev

Paper.js从一条路径绘制多个平行路径

来自分类Dev

在Python中使用Boto将内容从s3存储桶的一条路径递归复制到另一条路径

来自分类Dev

如何在一条路径上取得结果?

来自分类Dev

获取树的路径,但在python中的一条路径中将所有叶子oa节点

来自分类Dev

django urls 保留最后一条路径

来自分类Dev

递归函数提前返回只检查一条路径

来自分类Dev

节点:仅在第一条路径上上传到 S3 失败

来自分类Dev

从服务导航到另一条路线

来自分类Dev

我们如何在 Flask 中使用参数从另一条路由调用一条路由?

来自分类Dev

SVG 线性渐变显示在一条路径上,而不显示在另一条路径上

来自分类Dev

如果路径不存在尝试另一条路径

Related 相关文章

  1. 1

    emberjs对一条路线使用多个路径/ URL

  2. 2

    使“ linkTo”在两条路径而不是一条路径上处于活动状态

  3. 3

    如何将值从一条路线传递到另一条路线?

  4. 4

    如何判断一条路径是否是另一条路径的祖先?

  5. 5

    SVG路径叠加并动画出另一条路径

  6. 6

    Sails.js将一条路线重定向到另一条路线

  7. 7

    Paper.js从一条路径绘制多个平行路径

  8. 8

    Talend ESB:如何从另一条路线呼叫一条路线?

  9. 9

    从另一条路线到一条路线的快速调用GET方法

  10. 10

    如何使用ExpressJS将数据从一条路由传递到另一节点

  11. 11

    如何将图案和渐变混合到一条路径中?

  12. 12

    SVG / EPS(向量)如何用另一条路径剪切一条路径?

  13. 13

    将开放模式作为另一条路线上的一条单独路线

  14. 14

    如何在Express中将请求主体的数据从一条路径移动到另一条路径

  15. 15

    将一条路径转发到另一条路径,并将空格转换为连字符

  16. 16

    如何判断一条路径是否是另一条路径的祖先?

  17. 17

    进入另一条路线的商店

  18. 18

    阿帕奇骆驼(Apache Camel),从另一条路线调用一条路线

  19. 19

    Paper.js从一条路径绘制多个平行路径

  20. 20

    在Python中使用Boto将内容从s3存储桶的一条路径递归复制到另一条路径

  21. 21

    如何在一条路径上取得结果?

  22. 22

    获取树的路径,但在python中的一条路径中将所有叶子oa节点

  23. 23

    django urls 保留最后一条路径

  24. 24

    递归函数提前返回只检查一条路径

  25. 25

    节点:仅在第一条路径上上传到 S3 失败

  26. 26

    从服务导航到另一条路线

  27. 27

    我们如何在 Flask 中使用参数从另一条路由调用一条路由?

  28. 28

    SVG 线性渐变显示在一条路径上,而不显示在另一条路径上

  29. 29

    如果路径不存在尝试另一条路径

热门标签

归档