我运行此命令将数据从一台服务器复制到另一台服务器。它已经工作了一段时间。我将此设置为 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。