当要复制的路径和/或文件名有空格时,我该如何 scp?

当要复制的路径和/或文件名有空格时,我该如何 scp?

我在远程有remote_host一个这样的文件:

\home\user\path with spaces\filename with spaces.ext

我想scp将其移至当前目录.。我该怎么做?

谢谢!

答案1

经过一番调查,我发现了这两个选项:

scp 'user@remote_host:"/home/user/path with spaces/filename with spaces.ext"' .

scp 'user@remote_host:/home/user/path\ with\ spaces/filename\ with\ spaces.ext' .

我希望它也对你有帮助!

玩得开心!

编辑 - openssh 已更新了一项安全功能,该功能会导致路径名中出现某些字符时出现错误消息“协议错误:文件名与请求不匹配”。在这种情况下,使用 scp 的新-T选项将允许它工作。例如

scp -T 'user@remote_host:"/home/user/path with spaces/filename with spaces and (2018).ext"' .

这在https://stackoverflow.com/a/54599326

答案2

您有两个选择。

选项一:输入空格为“\”。例如;/home/matthew/File\ With\ Spaces.file

选项二:在撇号单引号中输入路径,如下所示:'/home/matthew/File With Spaces.file'

如果您使用制表键(Tab)自动完成文件名,它将自动插入“\”,但是您需要使用公钥认证才能在远程主机上工作。

答案3

对我来说,通过 scp 从远程 Windows 主机(Windows 10)复制到本地 Centos 8 机器:用 ? 代替空格,并用引号括起来:例如:scp[电子邮件保护]:“d:/downloads/sample?data/复制?.csv”。 (最后一个 . 表示 Linux 上的当前目录)。我在 Windows 机器上有一个带空格的路径和多个带空格的 csv 文件,所以我使用复制?如上所示。

答案4

试试这个我的朋友。

defstr PathAndFileName$
defstr Sheller$
PathAndFileName$="'c:\Documents And Settings\Users\Desktop\File.ext'"

Sheller$="scp 'user@remote_host:PathAndFileName$'"

Shell Sheller$

或者

run "scp user@remote_host:PathAndFileName$"

您必须将任何路径或文件名放在引号中,否则 scp 会将空格后的任何内容视为选项或命令。

相关内容