当使用 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
,这是整个空间转义努力的开始。
那么我必须做些什么才能使远程服务器正常工作,而不必从远程路径中删除空格或其他错误字符(如连字符)?