通过ssh进行Rsync,每次都能很好地工作。
但是,尝试rsync到仅允许sftp登录但不允许ssh登录的主机,则会出现以下错误:
rsync -av /源ssh user @ remotehost:/ target /
协议版本不匹配-您的外壳干净吗?(有关解释,请参见rsync手册页。)rsync错误:compat.c(171)[sender = 3.0.6]上的协议不兼容(代码2)。
这是rsync手册页中的相关部分:
此消息通常是由您的启动脚本或远程Shell工具在rsync用于其传输的流上产生不必要的垃圾引起的。诊断此问题的方法是像这样运行远程Shell:
ssh remotehost /bin/true > out.dat
然后看看out.dat。如果一切正常,则out.dat应该是零长度的文件。如果从rsync收到上述错误,则可能会发现out.dat包含一些文本或数据。查看内容并尝试找出产生的内容。最常见的原因是配置错误的shell启动脚本(例如.cshrc或.profile)包含了非交互式登录的输出语句。
在我的系统上尝试此操作会在out.dat中产生以下内容:
ssh-dummy-shell:不允许使用命令。
如我所料,主机不允许ssh登录。
以下链接显示可以通过使用带有sshfs的保险丝来完成此任务-但是它非常慢,并且不适合生产使用。
是否有可能使rsync sftp正常工作?
lftp -e "mirror -eRv /local/dir/ /remote/dir; quit;" sftp://user@server:port