在AWS S3上将数据从一个文件夹移动/复制到另一个文件夹

时间:2017-06-06 07:40:17

标签: python amazon-s3 boto3 aws-cli

我正在寻找在AWS S3存储桶上将数据从一个文件夹移动/复制到另一个文件夹的所有方法。

方法1:通过AWS CLI (最简单)

在你的实例上下载并安装awscli,我在这里使用windows(64-bit link)并运行" asw configure"填写您的配置,然后在cmd上运行此单个命令

aws s3 cp s3://from-source/ s3://to-destination/ --recursive

这里有cp用于复制和递归复制所有文件

方法2:使用python

通过AWS CLI
import os
import awscli
if os.environ.get('LC_CTYPE', '') == 'UTF-8':
    os.environ['LC_CTYPE'] = 'en_US.UTF-8'

from awscli.clidriver import create_clidriver
driver = create_clidriver()
driver.main('s3 mv s3://staging/AwsTesting/research/    s3://staging/AwsTesting/research_archive/ --recursive'.split())

即使这对我也很有效

方法3:使用python

通过Boto
import boto3
s3 = boto3.resource('s3')
copy_source = {
    'Bucket': 's3://staging/',
    'Key': 'AwsTesting/research/'
}
s3.meta.client.copy(copy_source, ''s3://staging/'', 'AwsTesting/research_archive/')

根据我的理解,我已经假设了关键词'对于bucket只是文件夹前缀所以我在这里提到了文件夹路径

错误:

  

无效的存储桶名称" s3:// staging":存储桶名称必须与正则表达式匹配" ^ [a-zA-Z0-9。-_] {1,255} $"

即使我将其更改为简单的存储桶名称为" staging"但没有成功。

如何通过boto和此密钥的概念了解存储桶连接?

2 个答案:

答案 0 :(得分:2)

通过cp-https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

可以与CLI一起使用sync
aws s3 sync s3://mybucket s3://mybucket2

基本上会做同样的事情。

答案 1 :(得分:1)

<Pivot>
    <Pivot.Transitions>
        <TransitionCollection />
    </Pivot.Transitions>
    <Pivot.ItemContainerTransitions>
        <TransitionCollection />
    </Pivot.ItemContainerTransitions>

    <PivotItem Header="Red">
        <PivotItem.Transitions>
            <TransitionCollection />
        </PivotItem.Transitions>
        <PivotItem.ContentTransitions>
            <TransitionCollection />
        </PivotItem.ContentTransitions>

        <Grid Background="Red" Width="100" Height="200" />
    </PivotItem>

    <PivotItem Header="Green">
        <Grid Background="Green" Width="100" Height="200" />
    </PivotItem>
</Pivot>