4

只是为了运行测试,我想将图像文件从我的桌面放入我的实例文件夹之一。

我已经尝试过在同一主题问题中提供的解决方案: Rsync to Amazon Ec2 Instance

所以我试过:

sudo rsync  -azv --progress -e "ssh -i ~/.ssh/MyKeyPair.pem" \ ~/Desktop/luffy.jpg  \ec2-user@xx.xx.xx.xxx:/home/ec2-user/myproject/mysite/mysite/media

~/.ssh/是 MyKeyPair.pem 所在的位置。事实上,要通过 ssh 进入,我首先cd ~/.ssh然后运行​​ssh -i ...命令。

但我收到了这个错误:

Warning: Identity file ~/.ssh/MyKeyPair.pem not accessible: No such file or directory.
Permission denied (publickey).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.6]

我在另一个问答页面上看到有人收到同样的错误报告,他通过 yum 安装 rsync 解决了这个问题。就我而言,它已经安装(版本 3.0.6)。

如果有人可以提供帮助,我将不胜感激!

4

2 回答 2

7
  1. 要将本地文件复制到 EC2,rsync 命令应该在您的本地系统上运行,而不是在 EC2 实例上。

  2. 如果波浪号 (~) 在引号内,它不会被 shell 扩展到您的主目录。尝试改用 $HOME。

  3. 如果您在本地使用 sudo,那么您可能希望在远程使用 sudo(例如,复制文件所有权)。这可以通过适当的--rsync-path选项来完成。

  4. 我建议包括-SHAX更紧密地保留目标系统上的文件的选项。

  5. 如果“媒体”应该是一个子目录,那么尾部斜杠将有助于避免一些奇怪的事情,如果它当前不存在的话。

最终结果:

sudo rsync  -azv -SHAX --progress -e "ssh -i $HOME/.ssh/MyKeyPair.pem" \
  --rsync-path "sudo rsync" \
  ~/Desktop/luffy.jpg \
  ec2-user@xx.xx.xx.xxx:/home/ec2-user/myproject/mysite/mysite/media/

这是一篇关于使用 rsync 和 EC2 实例的旧文章。对于 Amazon Linux,您可以将“ubuntu”替换为“ec2-user”。

http://alestic.com/2009/04/ubuntu-ec2-sudo-ssh-rsync

如果这不能解决您的问题,请提供有关您在何处运行的确切命令以及收到的确切错误消息的更多详细信息。

于 2014-09-30T04:30:00.720 回答
-1

伟大的!这需要稍作修改。删除sudo

sudo rsync -azv --progress -e "ssh -i $HOME/<path_to>" \
  --rsync-path "rsync" \
  <source> \
  <target>
于 2016-03-07T05:31:47.307 回答