aws 服务器之间文件转发,aws bucket之间相互拷贝数据

本文介绍了如何利用Python的boto库在Amazon S3的不同bucket之间进行对象复制,避免了不必要的下载和上传,节省了流量。通过调用S3的copy_object方法,可以实现bucket间的文件拷贝,并保持原有的访问权限。同时,文章提到S3不直接支持剪切操作,但可以通过复制后删除源对象的方式模拟剪切功能。
摘要由CSDN通过智能技术生成

在s3是使用过程中,最经常的操作基本就是拷贝了,s3上是按 这么结构存储数据的,在s3上可以创建bucket,然后就可以在bucket里放入数据了,每个 bucket下也可以建立不同目录, 这也是s3方便大家操作模拟的目录,其实在s3里全部都是对象存储,靠的是key来关联每个具体对象,这里的key 一般就是文件名, 每个目录下放不同的文件(为方便理解我们统一叫文件,其实在s3是面向对象存储的,每个数据专业名称应该叫对象),日常操作跟我们使用本地盘很相似,既然 很相似,那 剪切 、复制的操作基本就会平常了,所以一般来说,如果你想从一个bucket里拷贝文件到另一个bucket里,很简单的思路是,可以从源bucket中下载 下来文件,然后再上传刚到你目的bucket中,不过如果你真这样做就显得很low了,因为会浪费很多不必要的流量,其实s3提供了从一个bucket拷 贝到另一个bucket的接口,很方便操作,不过s3只提供了copy的功能,如果你想从一个bucket中剪切一个文件过来,对不起,s3的api接口 不提供这个功能,但你可以自己通过复制,删除来实现,比如你想剪切某bucket的一个对象,你可以先复制到目的bucket,然后在源bucket中删 除,其实就变相的实现了剪切功能了,讲了这么多,那接下来我们要具体说下bucket间的数据复制了,基本思路就是构造一个函数,这个函数只是包括四个参 数:

源bucket名称,源对象名称,目的bucket名称,目的对象名称。

以下是代码:

#!/usr/bin/env python

import boto

def copyobject(src_bucket, src_keyname, dst_bucket, dst_keyname):

s3 = boto.connect_s3()

src_bucket = s3.lookup(src_bucket)

src_keyname = src_bucket.lookup(src_keyname)

src_keyname.copy(dst_bucket, dst_keyname, preserve_acl=True)

copyobject(“bicher”, “install.html”, “bicherweb”, “install.html”)

测试结果就是从bicher中拷贝install.html文件到bicherweb中,对象名称没有修改,其中preserve_acl参数的意思是 如果是True,拷贝过去的对象会携带之前的访问权限(acl)到目的bucket,如果是False,会设置问缺省权限。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值