rsync:ssh 未知选项 -p2122

rsync:ssh 未知选项 -p2122

我运行此命令将数据从一台服务器复制到另一台服务器。它已经工作了一段时间。我将此设置为 cron 作业。昨天由于某种原因,它停止工作了。我手动运行它并收到此错误:

ssh -qt -p2123 [email protected] rsync -az --delete 
--rsh='ssh -p2122 -qt' 
/home/user36/public_html/ [email protected]:/home/user36/public_html/

rsync: -p2122: unknown option
rsync error: syntax or usage error (code 1) at main.c(1231) [client=2.6.8]

请注意,完整命令在一行中执行,但为了便于阅读,此处以多行显示

为什么它突然停止工作了?为什么它会在 ssh 端口选项中抛出错误?

编辑:这是在 CentOS 上

答案1

您需要在通过 ssh 传递的命令周围添加引号:

ssh -qt -p2123 [email protected] "rsync -az --delete 
--rsh='ssh -p2122 -qt' 
/home/user36/public_html/ [email protected]:/home/user36/public_html/"

这将防止单引号在远程主机上运行 rsync 之前被删除。

答案2

可能是由于软件包升级而停止工作,但这在 Ubuntu/Debian 上运行良好:

rsync -e 'ssh -c blowfish -oPort=2212 -ax'

答案3

-p 应该是端口号的参数,我通常在它后面加一个空格。如果您连接到端口 2123 以对另一台服务器运行 rsync 存档更新(带删除),这次通过端口 2122。

我唯一的建议是在 -p 后尝试一个空格并删除 -qt,这样:

ssh -p 2123 [email protected] rsync -az --delete --rsh='ssh -p 2122 ' /home/user36/public_html/ [email protected]:/home/user36/public_html/

您还可以尝试删除其中一个或另一个或两个命令上的 -qt(-q 表示安静,-t 表示强制分配伪终端)。如果有的话,需要在相关防火墙上打开端口 2123 和 2122。

相关内容