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

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


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

scp: .: not a regular file


#1 楼

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

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

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

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


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


评论


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

–克里斯
2015年2月26日,0:30



读完这篇文章后,我感到无比的愚蠢。来源,目的地! h!

– Chaim Eliyah
18-2-26在1:44

#2 楼

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

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


评论


尽管已接受的答案从技术上回答了实际问题,但此答案很可能是访问此页面的人所要查找的内容。

–cgnorthcutt
18年11月28日在19:41

#3 楼

之所以会出现此错误,是因为您尝试复制文件夹而不是文件,因此应该使用-r选项递归地复制文件。

将文件从远程计算机复制到本地计算机时使用以下命令/>
scp -r root@RemoteIP:/path/to/file /path/to/filedestination


OR

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

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


#4 楼

语法问题-删除


root @ IP:





/之间的空白路径


评论


但是,那么您就没有SCP的目标了。

–伯恩哈德
2012年10月23日下午6:07

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

–潜伏者
2012年10月23日7:53

我认为您可以随时评论自己的贡献,也可以随时对其进行编辑?

–伯恩哈德
2012年10月23日8:00

我不认为这会导致此错误,而不是常规文件

–HISI
18 Mar 7 '18 at 13:20

@hisi使用-r作为scp参数。

–安库尔·洛里亚(Ankur Loriya)
18年5月1日在5:02



#5 楼

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

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

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

评论


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

–JeffM
2012年10月23日下午5:00

#6 楼

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


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

#7 楼

这是迟来的答案,但我希望这对遇到我问题的人有所帮助。
当我尝试将zip文件上传到远程服务器时,我也遇到了同样的问题。
我的问题是,我错过了:,我以前用的是:scp myfile.zip remoteuser@IP/destination/folder
应该是scp myfile.zip remoteuser@IP:/destination/folder