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


72

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

scp root@IP: /path/to/picture.jpg

要求输入密码,然后...

scp: .: not a regular file

Answers:


58

常规文件是不是目录的文件,也不是特殊类型的“特殊”文件,例如命名管道,设备,套接字,门等。符号链接也不是常规文件,但是当其链接时它们的行为就像它们的目标一样。应用程序正在访问文件的内容。

您将其root@IP:作为副本的源和/path/to/picture.jpg目的地。源是root计算机上用户的主目录IP。这可用作目的地,而不用作来源。您键入的内容需要将目录复制到文件中;scp除非您要求提供带有该-r选项的递归副本,否则它无法复制目录(并且即使使用-r,它也将拒绝使用目录覆盖现有文件,但是如果源是常规文件,它将安静地覆盖常规文件)。

如果/path/to/picture.jpg是要复制的文件在远程计算机上的路径,则需要将文件名保留在主机规范中。是用冒号:分隔主机名和远程路径。您还需要指定一个目的地。

scp root@IP:/path/to/picture.jpg /some/destination

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

scp /path/to/picture.jpg root@IP:

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

scp root@IP:/path/to/picture.jpg /path/to/picture.jpg
scp {root@IP:,}/path/to/picture.jpg

2
确保主机名和文件之间没有空格
chris

阅读这篇文章后,我感到无比的愚蠢。来源,目的地!Du!
Chaim Eliyah '18

112

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

scp -r root@IP:/path/to/file /path/to/filedestination

1
尽管已接受的答案从技术上回答了实际问题,但此答案最有可能是访问此页面的人员所寻找的。
cgnorthcutt

4

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

root @ IP:

/路径


但是,那么您就没有目标scp了。
伯恩哈德(Bernhard)

对。我按Enter的速度太快了,缺乏代表来解决它。惊讶的是我什至可以在这里发表评论。干杯。
潜行者

2
我认为您可以随时评论自己的贡献,我也可以随时对其进行编辑?
伯恩哈德(Bernhard)2012年

我不认为这会导致此错误not a regular file
HISI

@hisi -r用作scp参数。
安库洛里亚

2

scp root@IP:/path/to/file /path/to/filedestination

上面的命令将文件从远程服务器复制到您的计算机。如果仅键入scp root@IP:,它将尝试复制root的主目录(scp用户home .)。

因此,您需要提供文件的确切路径


这工作了。谢谢,伙计。保持!
JeffM 2012年

2

您收到该错误的原因是您尝试复制文件夹而不是文件,因此应使用-roption 递归复制文件

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

scp -r root@RemoteIP:/path/to/file /path/to/filedestination

要么

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

scp -r /path/to/file root@RemoteIP:/path/to/filedestination

0
scp root@IP:/path/to/*.jpg  /path/to/filedestination/

这将起作用(至少在我的Mac上)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.