scp 副本有错误“不明确的目标”

bob*_*bob 77 ssh hard-drive scp macos

我尝试将文件从 linux (ubuntu) 机器复制到安装在 mac 上的外部硬盘驱动器,但收到一条错误消息:

scp: ambiguous target
Run Code Online (Sandbox Code Playgroud)

我所做的是,我在 mac 上,通过 ssh 连接到文件所在的 linux 机器。然后使用以下命令:

scp fileToCopy myMacUser@myMacMachine:/Volumes/MyExternalDrive/targetDirectory
Run Code Online (Sandbox Code Playgroud)

我做错了什么 ?在这种情况下使用的好命令是什么?

小智 111

如果路径中有空格,则必须通过使用双反斜杠\\并将整个路径括在引号中来对字符进行转义:

scp myfile.txt user@192.168.1.100:"/file\\ path\\ with\\ spaces/myfile.txt"
Run Code Online (Sandbox Code Playgroud)

  • 没有转义空格的单引号中的双引号也有效(`scp myfile.txt user@192.168.1.100:'"/file path with space/myfile.txt"'`)。事实上,您必须对文件名进行两次转义:第一次从本地 shell 转义,第二次从远程 shell 转义。 (8认同)
  • 是的,就是这样!我首先尝试使用双 \\ 但没有用,然后我尝试使用 \\ 在我的路径周围添加“”。那做的工作。谢谢。 (6认同)
  • 不带引号的三重反斜杠也有效。 (4认同)
  • 单引号和单反斜杠也同样有效。 (3认同)

kri*_*anp 13

我发现在目标位置周围有两组引号对我有用。外双引号,双引号内单引号。例如:

scp "my local file.txt" user@192.168.1.100:"'/folder/my spacey folder name/'"
Run Code Online (Sandbox Code Playgroud)

外部引号用于本地 shell,内部引号用于远程 shell。感谢@mik 在评论中提出建议。