我正在尝试将文件 rsync 到我的 EC2 实例:
rsync -Paz --rsh "ssh -i ~/.ssh/myfile.pem" --rsync-path "sudo rsync" file.pdf [email protected]:/home/ubuntu/
这将给出以下错误消息:
Warning: Identity file ~/.ssh/myfile.pem not accessible: No such file or directory.
[email protected]'s password:
但是, pem 文件肯定位于该路径~/.ssh/myfile.pem
:vi ~/.ssh/myfile.pem
向我显示该文件。
如果我从 rsync 命令的最末尾删除远程路径:
rsync -Paz --rsh "ssh -i ~/.ssh/myfile.pem" --rsync-path "sudo rsync" file.pdf [email protected]
然后命令似乎起作用了......
building file list ...
1 file to consider
file.pdf
41985 100% 8.79MB/s 0:00:00 (xfer#1, to-check=0/1)
sent 41795 bytes received 42 bytes 83674.00 bytes/sec
total size is 41985 speedup is 1.00
...但是当我进入远程服务器时,实际上什么都没有传输。
我究竟做错了什么?
答案1
--rsync-path "sudo rsync"
这使得 rsync 由特权用户运行(根),~/
根目录的主目录路径也是如此。如果你省略这部分代码,它应该可以工作。
PS.scp
正在运行,因为您使用普通帐户运行它。
PS2. 删除远程路径也有效,但这不会通过网络发送任何内容,而只是将文件“file.pdf”复制到名为[电子邮件保护](参见ls -l
)
答案2
当只有几个文件时,使用rsync
并不比 好scp
。但是,如果您管理的是完整的文档树,那么它就很棒,因为它只会发送差异。以下是我一直做的事情:
~/.ssh/config
在我的文件中为远程服务器设置一个条目
Host easy-short-name
HostName ec2-XXX-XX-XX-X.compute-1.amazonaws.com
IdentityFile ~/.ssh/private_key.pem
User ubuntu
然后您就可以使用此 rsync 命令,而不必处理用户名、密钥文件或长主机名:
rsync -avrk source-dir easy-short-name:~/destination-dir
此设置也适用于并具有允许我仅使用即可登录的scp
优点。ssh easy-short-name