SCP显示“找不到文件或目录”

6
我有一个问题。我正在使用SCP命令将文件从我的Mac OSX桌面传输到我的虚拟服务器。我运行了命令并成功地将一个文件从我的桌面传输到服务器,没有问题。
所以我使用的是相同的命令,如下所示: scp filename_I_want_to_transfer user@serverip: 基本上看起来像这样:scp test user@10.0.0.0: (我只是举例使用了随机IP)
无论如何,在我尝试传输的第二个文件中(也是文档格式),我不断收到“没有这样的文件或目录”的提示。对此有任何想法吗?

可能是因为“test”不存在? - Scott Solmer
文件实际上被命名为“dev”,它就在我的桌面上。我只是以“test”作为示例。我确定这个文件存在,因为它就在我的桌面上,大小为27.97 GB。所以这肯定不是问题所在。路径为/Users/nokeys/desktop,供您参考。 - Johnathon22
实际上,从给出的示例命令可以得出结论,当前目录中不存在“test”。您应该给出一个确切的失败示例。 - U. Windl
3个回答

15

要将本地主机上的文件发送到另一个服务器,请使用:

scp /path/to/file.doc user@<IP or hostname>:/path/to/where/it/should/go/

要从另一个服务器获取文件到本地主机,请使用:

scp user@<IP or hostname>:/path/to/file.doc /path/to/where/it/should/go/

这是我可靠使用的从一个位置复制到另一个位置的格式。您可以使用绝对路径,或相对/特殊字符路径,例如

scp suiterdev@fakeserver:~/folder/file .

将名为file的文件从主机fakeserver以用户suiterdev的身份,安全地复制到位于$HOME/folder/~相当于~suiterdev$HOME)的当前目录(.)。

但是请注意,要确保不会扩展远程路径中使用的特殊字符(参见shell的文件名扩展机制),以避免在本地扩展(通常这不是您想要的结果)。


1
这仍然返回相同的错误,我确定我输入了每个字母。甚至尝试了3次。如果我要复制的文件技术上不是.doc,会有什么区别吗?该文件是vagrant的软件包基础盒子。这意味着它在技术上类似于虚拟机,我正在尝试将其复制到基本裸机虚拟服务器。 - Johnathon22
Linux是区分大小写的,你确定你输入的路径和文件名与你尝试获取文件的服务器上的完全一样吗?如果有任何不同,比如大小写不同,在一个地方有扩展名而在另一个地方没有,工具将无法识别你所要求的内容。 - suiterdev
是的,我确定一切都拼写正确。请看下面,这就是我的输入方式。需要注意的是,我正在尝试从我的Mac台式机连接到一个虚拟服务器上。我是在我的Mac终端上输入这些命令的。scp steven@10.10.10.10:/Users/nokeys/Desktop/dev /home/steven顺便说一下,我使用了一个虚假的IP地址,所以IP地址不是问题。除此之外,我输入的内容完全正确,错误信息总是:/Users/nokeys/Desktop/dev: 没有该文件或目录。 不确定是什么原因导致这个文件失败,而我桌面上的其他文件却可以成功执行。 - Johnathon22
2
啊,弄清楚了...不要像我一样用scp(服务器凭据)...你必须这样做scp(桌面上文件的路径)空格 服务器凭据 然后是服务器上放置它的路径。所以scp steven@10.10.10.10:/Users/nokeys/Desktop/dev /home/steven应该像这样scp /Users/nokeys/Desktop/dev steven@10.10.10.10:/home/steven那就是问题所在。 - Johnathon22

7

对于我来说,我正在使用Ubuntu 15.10,以下是我用的方法。

scp user@host.com:path/to/file.txt /home/to/local/folder/

而不是

scp user@host.com:/path/to/file.txt /home/to/local/folder/

注意在user@host.com主机后面,我没有包括斜杠,直接在“:”之后添加文件夹。

Scp默认使用目标用户的主目录作为默认目录(作为相对路径),因此当您需要一个绝对路径时,请使用一个(以斜杠(/)开头)。


2
我知道现在已经太晚了,无法帮助您,但这可能有助于其他遇到与我相同问题的人。对于我的情况,我的电脑设置为使用反斜杠"\"而不是正斜杠"/",更改为反斜杠后错误消失了。
但是,我只需要在我的电脑目录中将斜杠更改为反斜杠,因为我的树莓派使用正斜杠。
我知道这有点令人困惑,但这对我有用。

传统上,斜杠(/)在 MS-DOS 和 MS-Windows 系统调用中也可以使用,但命令和 GUI 通常要求使用反斜杠(\)。有时,即使反斜杠作为转义字符工作时(C 程序员知道这一点),您也需要将其加倍。 - U. Windl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接