使用SSH将rsync连接到远程服务器时,如何在远程路径中转义空格等?一个简单的反斜杠会转出用于本地bash提示的空间,但是在远程计算机上,该空间将被视为路径的中断,从而标记该路径的结尾。
因此,当我执行rsync -avz /path/to/source/some\ dir/ user@host.tld:/path/to/dest/some\ dir/
该操作时,远程服务器将读取该内容,/path/to/dest/some/
并且由于无法远程找到该目的地,因为实际目的地是“某个目录”而不是“某个”。
如果我尝试相同的命令并转义反斜杠和空格以超过本地bash提示符并为远程服务器维护反斜杠(共三个反斜杠:)/path/to/dest/some\\\ dir/
,则确实会将反斜杠发送到远程服务器,但是远程服务器然后将路径解释为,/path/to/dest/some\/
而不是/path/to/dest/some\ dir/
仍然删除空格和其后的字符。
如果我尝试用引号将路径引起来,它的行为几乎相同,可以有效地在空格处切断路径。因此,它也只能通过本地bash提示。
最初,我使用的路径中包含“-”(空格-连字符-空格)段,并且远程服务器返回错误rsync: on remote machine: -: unknown option
,这首先是整个节省空间的工作的开始。
那么,我该怎么做才能使它在远程服务器上正常工作,而不必从远程路径中删除空格或其他错误字符,例如连字符?
-s
无需解决了该问题适用手动双逃逸。