使用 SCP 时出错:“不是常规文件”

Jef*_*ffM 113 scp

我已经搜索了一段时间,但找不到常规文件的定义。我的路径是永久的(我从 开始/)并且我正在连接到

scp root@IP: /path/to/picture.jpg
Run Code Online (Sandbox Code Playgroud)

导致查询密码,然后...

scp: .: not a regular file
Run Code Online (Sandbox Code Playgroud)

小智 169

复制目录时,您应该使用以下-r选项:

scp -r root@IP:/path/to/file /path/to/filedestination
Run Code Online (Sandbox Code Playgroud)

  • 虽然接受的答案在技术上回答了实际问题,但这个答案很可能是访问此页面的人正在寻找的。 (15认同)

Gil*_*il' 80

常规文件不是目录文件,也不是更奇特的“特殊”文件,例如命名管道、设备、套接字、门等。符号链接也不是常规文件,但它们的行为与目标相同应用程序正在访问文件的内容。

root@IP:作为副本的源和/path/to/picture.jpg目标传递。源是用户root在机器上的主目录IP。这作为目的地很有用,但不能作为来源。您键入的内容将目录复制到文件中;scp无法复制目录,除非您要求使用该-r选项进行递归复制(即使使用-r,它也会拒绝用目录覆盖现有文件,但如果源是常规文件,它会悄悄地覆盖常规文件)。

如果/path/to/picture.jpg是要复制的文件在远程机器上的路径,则需要将文件名粘贴到主机规范中。它是将:主机名与远程路径分开的冒号。您还需要指定一个目的地。

scp root@IP:/path/to/picture.jpg /some/destination
Run Code Online (Sandbox Code Playgroud)

如果要将本地文件复制/path/to/picture.jpg到远程主机,则需要交换参数。Unix 复制命令将源放在最前面,将目标放在最后。

scp /path/to/picture.jpg root@IP:
Run Code Online (Sandbox Code Playgroud)

如果要将远程文件复制/path/to/picture.jpg到本地相同位置,则需要重复路径。你可以让你的 shell 为你做重复的工作(更少的输入,更少的可读性)。

scp root@IP:/path/to/picture.jpg /path/to/picture.jpg
scp {root@IP:,}/path/to/picture.jpg
Run Code Online (Sandbox Code Playgroud)

  • 确保主机名和文件之间不存在空格 (3认同)

小智 11

您收到该错误是因为您正在尝试复制文件夹而不是文件,因此您应该使用-r选项递归复制文件

将文件从远程机器复制到本地机器时使用以下命令

scp -r root@RemoteIP:/path/to/file /path/to/filedestination
Run Code Online (Sandbox Code Playgroud)

或者

将文件从本地机器复制到远程机器时

scp -r /path/to/file root@RemoteIP:/path/to/filedestination
Run Code Online (Sandbox Code Playgroud)


lur*_*ker 5

语法问题 - 删除之间的空格

根@IP:

/小路

  • 我想你总是可以评论你自己的贡献,我想你也可以总是编辑它们? (2认同)