【问题标题】:How to move files from amazon ec2 to s3 bucket using command line如何使用命令行将文件从 amazon ec2 移动到 s3 存储桶
【发布时间】:2015-04-08 09:12:19
【问题描述】:

在我的亚马逊 EC2 实例中,我有一个名为 uploads 的文件夹。在这个文件夹中,我有 1000 张图像。现在我想将所有图像复制到我的新 S3 存储桶中。我该怎么做?

【问题讨论】:

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


    【解决方案1】:

    第一个选项 sm3cmd

    使用s3cmd

    s3cmd get s3://AWS_S3_Bucket/dir/file
    

    看看this s3cmd documentation

    如果您使用的是 linux,请在命令行上运行:

    sudo apt-get install s3cmd
    

    或 Centos,Fedore。

    yum install s3cmd
    

    使用示例:

    s3cmd put my.file s3://pactsRamun/folderExample/fileExample
    

    第二个选项

    使用Cli from amazon

    更新

    就像 @tedder42 在 cmets 中所说,不要使用 cp,而是使用 sync

    看看下面的语法:

    aws s3 sync <source> <target> [--options]
    

    例子:

    aws s3 sync . s3://my-bucket/MyFolder
    

    更多信息和示例请访问Managing Objects Using High-Level s3 Commands with the AWS Command Line Interface

    【讨论】:

    • @PactsRamun 这对您有帮助吗?
    • s3cmd 在这一点上非常过时了。 aws-cli 已经发布了很长一段时间了。我建议使用sync 而不是cp
    • @tedder42 检查更新答案 你怎么看?感谢您的建议
    • s3cmd 没有过时(至少现在没有),最新版本 1.6.1 是从 2016 年 1 月 21 日开始的,开发人员不断添加功能和错误修复。检查s3tools.org/news
    • 我一直使用 awscli 的失败率非常低,这是我第一次尝试 s3cmd 并且put 连续以[Errno 32] Broken pipe 失败并不断尝试以较低的传输率并最终给出向上。在某处,我读到问题是由于文件大小造成的(我尝试复制一个中等大小的文件〜7Gib)。与往常一样,awscli 能够处理这个问题。希望有人在遇到此错误时发现这很有用。
    【解决方案2】:
    aws s3 sync your-dir-name s3://your-s3-bucket-name/folder-name
    
    • 重要提示:这会将您命名目录中的每个项目复制到您选择的 s3 存储桶文件夹中。这不会复制整个目录。

    或者,您可以对一个选定的文件使用以下命令。

    aws s3 sync your-dir-name/file-name s3://your-s3-bucket-name/folder-name/file-name
    

    或者您可以使用通配符来全选。请注意,这将复制您的整个目录并生成元数据并将它们保存到您的 s3 存储桶文件夹中。

    aws s3 sync . s3://your-s3-bucket-name/folder-name
    

    【讨论】:

      【解决方案3】:

      要从 EC2 复制到 S3,请在 EC2 的命令行中使用以下代码。

      首先,您必须为您的 EC2 实例提供“具有完全 s3 访问权限的 IAM 角色”。

      aws s3 cp Your_Ec2_Folder s3://Your_S3_bucket/Your_folder --recursive
      

      【讨论】:

        【解决方案4】:

        还要注意 aws cli 与 s3 同步,它是多线程的,一次上传文件的多个部分。但是,目前无法配置线程数。

        【讨论】:

          【解决方案5】:
          aws s3 mv /home/inbound/ s3://test/ --recursive --region us-west-2
          

          【讨论】:

          • 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。 proper explanation would greatly improve its long-term value 通过展示为什么这是一个很好的解决问题的方法,并将使其对未来有其他类似问题的读者更有用。请edit您的回答添加一些解释,包括您所做的假设。
          【解决方案6】:

          这可以很简单地完成。请按照以下步骤操作:

          • 在控制台上打开 AWS EC2。
          • 选择实例并导航到操作。
          • 选择实例设置并选择附加/替换 IAM 角色
          • 完成后,连接到 AWS 实例,其余的将通过以下 CLI 命令完成:

          aws s3 cp 文件位置/文件名 s3://bucketname

          因此您无需安装或做任何额外的工作。

          请注意...文件位置是指本地地址。 bucketname 是您的存储桶的名称。 另请注意:如果您的实例和 S3 存储桶位于同一账户中,则可以这样做。 干杯。

          【讨论】:

            【解决方案7】:

            我们确实有可供测试的试运行功能。

            • 首先,我会为 ec2-instance 分配一个角色以便能够读取 写入 S3
            • SSH 进入实例并执行以下操作
            • vi tmp1.txt
            • aws s3 mv ./ s3://bucketname-bucketurl.com/ --dryrun
            • 如果这可行,那么您所要做的就是创建一个脚本 将此文件夹中具有特定内容的所有文件上传到 s3 存储桶
            • 我已经在我的脚本中写了以下命令来移动 从当前目录到存储桶/文件夹中超过 2 分钟的文件
            • cd 目录; ls 。 -rt | xargs -I FILES 查找文件 -maxdepth 1 -name '*.txt' -mmin +2 -exec aws s3 mv '{}' s3://bucketurl.com

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2017-05-10
              • 2017-01-10
              • 1970-01-01
              • 1970-01-01
              • 2020-05-29
              • 2020-03-10
              • 2021-08-18
              相关资源
              最近更新 更多