Linux 如何将scp连接到AmazonS3?
我需要将~2TB的备份文件发送到S3。我想最省事的选项应该是LinuxSCP命令(使用s3cmd,不希望过度使用java/RoR) 然而,我不确定是否可能:如何将S3的私钥和公钥用于scp,并且不知道我的目标IP/url/path是什么 我很感激你的提示。你不能这么做Linux 如何将scp连接到AmazonS3?,linux,amazon-s3,scp,Linux,Amazon S3,Scp,我需要将~2TB的备份文件发送到S3。我想最省事的选项应该是LinuxSCP命令(使用s3cmd,不希望过度使用java/RoR) 然而,我不确定是否可能:如何将S3的私钥和公钥用于scp,并且不知道我的目标IP/url/path是什么 我很感激你的提示。你不能这么做 如果你不介意花钱的话,最快的方法可能就是把钱放在磁盘上寄给他们,他们会帮你放在那里。查看他们的服务。对于我们的AWS备份,我们对rsync使用duplicity和trickle duplicity的组合,加密和trickle限制上
如果你不介意花钱的话,最快的方法可能就是把钱放在磁盘上寄给他们,他们会帮你放在那里。查看他们的服务。对于我们的AWS备份,我们对rsync使用duplicity和trickle duplicity的组合,加密和trickle限制上传速度为什么不将其scp到EBS卷,然后从那里使用s3cmd?只要您的EBS卷和s3存储桶位于同一地区,您只需支付一次入站数据费用(从您的网络到EBS卷)
我发现,一旦进入s3网络,s3cmd就更加可靠,数据传输速率也远高于直接到s3的传输速率。这就是问题所在。从任何Linux设备上安装boto rsync,然后使用它将/local/path/传输到您的存储桶/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/
截至2015年,不支持SCP/SSH(由于其他答案中提到的原因,可能永远不会支持) 用于将文件复制到S3或从S3复制文件的官方AWS工具
pip3安装awscli
)-注意需要指定凭据,我更喜欢通过环境变量而不是文件:AWS\u ACCESS\u KEY\u ID
,AWS\u SECRET\u ACCESS\u KEY
aws s3 cp /tmp/foo/ s3://bucket/ --recursive --exclude "*" --include "*.jpg"
aws s3 sync . s3://mybucket
编辑:实际上,AWS CLI基于botocore:
因此,作为一位年长的政治家,botosync应该得到比我可能给予它更多的尊重。有一种叫做龙盘的神奇工具。它甚至可以作为一个同步工具,而不仅仅是普通的scp 提供了AmazonS3的设置指南,设置后,您可以将文件从本地计算机复制粘贴到s3或设置自动同步。用户界面与WinSCP或Filezilla非常相似。给你
scp USER@REMOTE_IP:/FILE_PATH >(aws s3 cp - s3://BUCKET/SAVE_FILE_AS_THIS_NAME)
谢谢,但这太过分了:)好吧,你有两个TB,即使在非常快的网络上也需要一段时间:)你不能SCP,因为它不像EC2,没有机器运行SSH服务器供你SCP。你可以使用他们的API上传,试试下面的信息:“亚马逊S3备份工具列表”可能有助于避免向亚马逊付费:我的服务器可以以5-10MB/s的速度上传。此外,我使用crontab来实现这一点,因此实际上不需要“等待”备份上传完成。这就是我寻找命令行解决方案的原因。声称拥有您所需要的,“同步:一个用于将您计算机上的目录与Amazon S3或Google存储帐户同步的命令行应用程序。非常适合在不同计算机之间执行备份或同步文件。”。在移动到最新版本的s3cmd并从put命令中删除--private ack之后,我的s3cmd问题似乎得到了解决!老实说,这种boto-rsync的东西太可怕了。我想知道是否有办法通过ssh连接到服务器,然后使用AWS外壳,而不是传统的外壳,公开原始文件系统(AWS S3有意将其抽象出来)请注意,在ubuntu上,您可以
获得安装awscli
,这可能比使用pip3安装awscli
更好,可以使用除-
以外的任何东西吗@吉普赛人你什么意思-
表示使用bash的进程替换传递给awscli的stdin这几乎正是我想要的,只是在另一个方向。