SSH到服务器并从那里rsync–;非标准端口
我有两台具有非标准ssh端口的服务器:SSH到服务器并从那里rsync–;非标准端口,ssh,rsync,Ssh,Rsync,我有两台具有非标准ssh端口的服务器: liveserver.com-p123 testserver.com-p456 为了将数据从liveserver同步到testserver,我想我应该用ssh连接到testserver,然后从那里将数据rsync到本地(也称为testserver) ssh user@testserver.com -p 456 rsync -zra -e "ssh -p 123 --delete --exclude='.env' user@liveserver.com:
- liveserver.com-p123
- testserver.com-p456
ssh user@testserver.com -p 456 rsync -zra -e "ssh -p 123 --delete --exclude='.env' user@liveserver.com:/path/to/dump.bz2 path/to;
这给了我
Unexpected remote arg: user@liveserver.com:/path/to/dump.bz2
rsync error: syntax or usage error (code 1) at main.c(1354) [sender=3.1.3]
我的概念是错误的还是仅仅是语法
ssh user@testserver.com -p 456 "rsync -zra -e 'ssh -p 123' --delete --exclude=.env user@liveserver.com:/path/to/dump.bz2 path/to"
未经测试有效!谢谢总是使用这些双引号,还是只在没有双引号的情况下中断时才使用它们,这是一种良好的做法?@Urs在这种情况下需要这样做,因为在执行该命令之前会发生什么。本地shell解析它,应用并删除双引号。这被传递到
ssh
命令,该命令将其发送到远程计算机,在远程计算机上,shell再次解析它,然后再次应用并删除单引号,并将结果传递给该系统上的rsync
。由于单引号适用于传递给rsync
的内容,因此它们才是真正重要的;但是仍然需要双引号,这样本地shell就不会删除单引号。理解额外解析步骤的简便技巧:替换sshuser@testserver.com-p 456
和echo
,并查看打印内容。这就是本地shell解析并删除第一级引号(双引号)后的样子,这就是将发送到远程shell执行的内容。如果您可以让它成为在远程系统上执行的有效命令,那么当您将ssh…
部分放回时,它应该可以工作。