【问题标题】:copying files between s3 buckets without folders amazon aws cli在没有文件夹的 s3 存储桶之间复制文件 amazon aws cli
【发布时间】:2017-02-06 11:46:24
【问题描述】:

我正在查看 aws cli 的文档,但找不到将某个目录结构中的唯一文件复制到其他具有“扁平”结构的存储桶的方法(我想要一个目录和其中的所有文件)。

例如

/a/b/c/1.pg
/a/2.jpg
/a/b/3.jpg

我想有不同的桶:

/x/1.jpg
/x/2.jpg
/x/3.jpg

我错过了什么还是不可能? 你知道我该怎么做吗?

【问题讨论】:

  • 同名的文件怎么办?

标签: amazon-web-services amazon-s3 aws-cli


【解决方案1】:

假设您在系统上配置了 aws cli,并假设两个存储桶位于同一区域。 您可以首先使用以下命令将 s3 存储桶下载到本地计算机:

aws s3 sync s3://originbucket /localdir/

发布这个,使用 find 命令将所有文件放到一个目录中

find /localdir/ -type f -exec mv {} /anotherlocaldir/

终于可以再次上传文件到s3了!

aws s3 sync /anotherlocaldir/ s3://destinationbucket

【讨论】:

  • 我不认为s3会因为各种原因允许它,如果你在不同的目录结构下有1.jpg怎么办?那么它会考虑哪个文件!
【解决方案2】:

您不需要像另一个答案中所建议的那样在本地下载文件。相反,您可以编写一个 shell 脚本或执行以下操作:

  • s3://bucket1 上运行ls 以获取其中所有文件的完全限定名称。
  • 对于每个文件,运行cp 将其从当前位置复制到s3://bucket2/x/

【讨论】:

  • 我不得不选择这个
【解决方案3】:

以下是一些示例供您参考:

aws s3 同步 /a/b/c/1.pg s3://bucketname/

aws s3 同步 /a/2.jpg s3://bucketname/

aws s3 同步 /a/b/3.jpg s3://bucketname/

要将目录的所有内容同步到 S3 存储桶:

aws s3 同步 /directoryPath/ s3://bucketname/

AWS 参考网址:http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多