【问题标题】:Uploading file to AWS from local machine从本地机器上传文件到 AWS
【发布时间】:2013-08-12 17:30:28
【问题描述】:

如何使用scp命令上传文件到aws服务器

  • 我在本地机器的/Downloads 中有.pem 文件
  • 我正在尝试将文件复制到 AWS 服务器中的 /images 文件夹

    我可以使用什么命令?

谢谢,

【问题讨论】:

    标签: amazon-web-services amazon-ec2


    【解决方案1】:

    您可以尝试kitten 实用程序,它是对 boto3 的封装。您可以轻松上传/下载文件并在 EC2 服务器上或同时在多台服务器上运行命令。

    kitten put -i ~/.ssh/key.pem cat.jpg /tmp [SERVER NAME][SERVER IP]
    

    其中服务器名称是例如 ubuntuec2-user 等。

    这会将cat.jpg文件上传到服务器的/tmp目录

    【讨论】:

      【解决方案2】:

      这是从本地上传到远程的正确方法。

      scp -i "zeus_aws.pem" ~/Downloads/retail_market_db-07-01-2021.sql ubuntu@ec2-3-108-200-27.us-east-2.compute.amazonaws.com:/var/www/
      

      可能是更好的方法

      【讨论】:

        【解决方案3】:

        scp 的另一种替代方式是rsync

        rsync 的一些好处

        rsync cmd

        rsync -ravze "ssh -i /home/your-user/your-key.pem "  --exclude '.env'  --exclude '.git/' /var/www/your-folder-to-upload/*  ubuntu@xx.xxx.xxx.xxx:/var/www/your-remote-folder
        

        现在,如果您发现此语法有点冗长,您可以使用aws-upload,它可以完成上述所有操作,但您只需使用制表符即可。

        【讨论】:

        • rsync 当您需要传输大量数据(例如超过几场演出)时也建议使用,因为它确实支持“恢复”而无需额外努力(只需添加 --partial 参数以保留部分传输的文件) !您可以随时 Ctrl-C 操作(以模拟连接丢失)并再次运行 rsync - 它会 resume (与将重新开始的 scp 相比)。您也可以使用 --bwlimit 对传输进行流量调整(如果您不想占用所有可用带宽并将 50% 留给您的妻子进行一些正在运行的系列;)。
        • 谢谢,@DmitryShevkoplyas。我已经更新了答案。对于'resume'选项不应该是--append--append-verify?见here
        • 不,我从来没有使用过 --append 和 --append-verify 并且多次中断传输只是为了确保下一次尝试不会重新开始并且它完美地工作,但是现在,因为你问过,我找到了这个答案,我不再 100% 确定是否可以在没有任何 --appendXXX 键的情况下使用它:unix.stackexchange.com/a/165417/227338 这是我脚本的“内容”:rsync --partial - -progress ${BWLIMIT} --rsh=ssh $1 $2 (过去 10 多年都很好用:)
        【解决方案4】:

        迭戈的回答有效。但是,如果您不知道您的弹性 IP,那么您可以简单地使用以下命令 scp(检查参数的顺序)

        scp -i path-to-your-identifier.pem 要复制的文件 ubuntu@public-IP:/required-path

        仅供参考,这里 ubuntu 是您的 AWS 用户,public-IP 有点像 54.2xx.xxx.xxx 例如54.200.100.100 等 (如果顺序混乱:标识符之前的文件名,那么你会得到一个Permission denied (publickey).lost connection 错误)

        另外,请记住.pem 文件的权限。应该是 400 或 600。不向所有人公开。 希望对您有所帮助!

        【讨论】:

          【解决方案5】:

          你可以使用普通的scp:

          scp -i ~/Downloads/file.pem local_image_file user@ec2_elastic_ip:/home/user/images/
          

          你需要给 EC2 实例设置一个弹性 IP,在 EC2 实例安全组中打开你本地机器 IP 的 22 端口,并使用正确的用户(可以是 ec2-user、admin 或 ubuntu(查看AMI 文档))。

          【讨论】:

            【解决方案6】:

            有很多方法可以实现你想要的

            1. 使用 s3cmd http://s3tools.org/s3cmd

            2. 或使用cyberduck http://cyberduck.ch/

            3. 或使用亚马逊Java API编写工具

            【讨论】:

            • cyberduck 之类的Linux 吗?
            • 不是我用过的,我更喜欢 s3cmd,我刚用谷歌搜索了这个 - dragondisk.com ,看起来他们已经停止开发了
            • 巧合的是,几天前我刚刚写了一篇关于此的博客文章。 blog.ryanparman.com/2013/08/10/…
            猜你喜欢
            • 2011-12-05
            • 2015-11-16
            • 1970-01-01
            • 2020-01-23
            • 1970-01-01
            • 2020-03-19
            • 1970-01-01
            • 2012-01-10
            • 2011-01-28
            相关资源
            最近更新 更多