如何scp到亚马逊s3?

qli*_*liq 21 linux scp amazon-s3

我需要将~2TB的备份文件发送到S3.我想最麻烦的选择是Linux scp命令(对s3cmd 有困难,并且不希望过度使用java/RoR这样做).

但是我不确定它是否可能:如何使用scp的S3私有和公共密钥,并且不知道我的目标IP/url /路径是什么?

我很感激你的提示.

Sri*_*bat 34

截至2015年,不支持SCP/SSH(可能永远不会出于其他答案中提到的原因).

用于向/从S3复制文件的官方AWS工具

  1. 命令行工具(pip3 install awscli) - 需要指定注释凭据,我更喜欢通过环境变量而不是文件:AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY.

    aws s3 cp /tmp/foo/ s3://bucket/ --recursive --exclude "*" --include "*.jpg"
    
    Run Code Online (Sandbox Code Playgroud)

    和类似rsync的命令:

    aws s3 sync . s3://mybucket
    
    Run Code Online (Sandbox Code Playgroud)
  2. 网络界面:

非AWS方法

任何其他解决方案都依赖于第三方可执行文件(例如botosync,jungledisk ......),只要它们受到支持,它们就可以很好.但是,随着时间的推移,第三方工具会来来去去,而且您的脚本的保质期会更短.


编辑:实际上,AWS CLI基于botocore:

https://github.com/boto/botocore

所以botosync作为一个老政治家应该得到更多的尊重,而不是我给它.

  • 请注意,在 ubuntu 上,您可以“apt-get install awscli”,这对某些人来说可能比使用“pip3 install awscli”更可取 (2认同)

dat*_*.io 11

这就是为什么,boto-rsync.在任何Linux机器上,安装boto-rsync,然后使用它将/ local/path /传输到your_bucket/remote/path /:

boto-rsync -a your_access_key -s your_secret_key /local/path/ s3://your_bucket/remote/path/
Run Code Online (Sandbox Code Playgroud)

路径也可以是文件.

对于AWS以外的S3兼容提供程序,请使用--endpoint:

boto-rsync -a your_access_key -s your_secret_key --endpoint some.provider.com /local/path/ s3://your_bucket/remote/path/
Run Code Online (Sandbox Code Playgroud)

  • 这个boto-rsync的东西太棒了 (3认同)

El *_*obo 8

你不能SCP.

最快的方式,如果你不介意花钱,可能只是将它发送给他们在磁盘上,他们会把它放在那里给你.查看他们的导入/导出服务.

  • 好吧,你确实有 2 TB,即使在非常快的网络上也需要一段时间:) 你不能 SCP,因为它不像 EC2,没有机器运行 SSH 服务器供你 SCP 到。您可以使用他们的 API 上传,尝试 http://stackoverflow.com/questions/667478/how-do-i-bulk-upload-to-s3 上的信息。 (2认同)

Gyp*_*aut 7

干得好,

scp USER@REMOTE_IP:/FILE_PATH >(aws s3 cp - s3://BUCKET/SAVE_FILE_AS_THIS_NAME)
Run Code Online (Sandbox Code Playgroud)