我需要将〜2TB的备份文件发送到S3。我想最麻烦的选择是Linux scp命令(对{s3cmd有difficulty并且不希望有过多的java / RoR这样做)。
但是我不确定是否可能:如何使用scp的S3私有和公钥,并且不知道我的目标IP / url /路径是什么?
我很感激你的提示。
答案 0 :(得分:33)
截至2015年,SCP / SSH不受支持(可能永远不会出于其他答案中提到的原因)。
command line tool(pip3 install awscli
) - 需要指定凭据凭据,我更喜欢通过环境变量而不是文件:AWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
。
aws s3 cp /tmp/foo/ s3://bucket/ --recursive --exclude "*" --include "*.jpg"
和类似rsync的命令:
aws s3 sync . s3://mybucket
网络界面:
任何其他解决方案都依赖于第三方可执行文件(例如botosync,jungledisk ......),只要它们受到支持,它们就可以很好。但是,随着时间的推移,第三方工具会随之而来,而且您的脚本的保质期会缩短。
编辑:实际上,AWS CLI基于botocore:
https://github.com/boto/botocore
因此,作为一位年长的政治家,botosync应该得到更多的尊重,而不是我给它。
答案 1 :(得分: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/
路径也可以是文件。
对于AWS以外的S3兼容提供商,请使用--endpoint:
boto-rsync -a your_access_key -s your_secret_key --endpoint some.provider.com /local/path/ s3://your_bucket/remote/path/
答案 2 :(得分:8)
你不能SCP。
最快的方式,如果你不介意花钱,可能只是把它发送到磁盘上,他们会把它放在那里给你。查看他们的Import/Export服务。
答案 3 :(得分:4)
为什么不将它scp到EBS卷然后从那里使用s3cmd?只要您的EBS卷和s3存储桶位于同一区域,您只需支付一次入站数据费用(从您的网络到EBS卷)
我发现,一旦进入s3网络,s3cmd就更可靠,数据传输速率远高于直接传输到s3。
答案 4 :(得分:1)
有一个名为Dragon Disk的神奇工具。它甚至可以作为同步工具使用,而不仅仅是简单的scp。
设置亚马逊s3的指南here,在设置之后,您可以将文件从本地计算机复制粘贴到s3或设置自动同步。用户界面与WinSCP或Filezilla非常相似。
答案 5 :(得分:1)
Here you go,
scp USER@REMOTE_IP:/FILE_PATH >(aws s3 cp - s3://BUCKET/SAVE_FILE_AS_THIS_NAME)
答案 6 :(得分:-3)
对于我们的AWS备份,我们使用双重性和欺骗性双重性来进行rsync和加密,并使用涓流来限制上传速度