scp文件从本地到远程机器错误:没有这样的文件或目录

时间:2014-10-13 18:12:39

标签: scp

我希望能够将目录及其所有文件从本地计算机传输到远程计算机。我不太用SCP,所以我有点困惑。

我通过ssh连接到我的远程计算机,并输入命令

scp name127.0.0.1:local/machine/path/to/directory filename

local/machine/path/to/directory是我在本地主机上所需目录中使用pwd获得的值。

我目前收到错误

No such file or directory

10 个答案:

答案 0 :(得分:43)

看起来您正尝试使用该命令复制到本地计算机。

示例scp看起来更像下面的命令:

将文件“foobar.txt”从本地主机复制到远程主机

$ scp foobar.txt your_username@remotehost.edu:/some/remote/directory

scp“the_file”your_username @ the_remote_host:/ path / to / the / directory


发送目录:

将目录“foo”从本地主机复制到远程主机的目录“bar”

$ scp -r foo your_username@remotehost.edu:/some/remote/directory/bar

scp -r“the_directory_to_copy”your_username @ the_remote_host:/ path / to / the / directory / to / copy / to


并从远程主机复制到本地:

将文件“foobar.txt”从远程主机复制到本地主机

$ scp your_username@remotehost.edu:foobar.txt /your/local/directory

scp your_username @ the_remote_host:the_file / your / local / directory


并包含端口号:

将文件“foobar.txt”从端口8080的远程主机复制到本地主机

$ scp -P 8080 your_username@remotehost.edu:foobar.txt /your/local/directory

scp -P port_number your_username @ the_remote_host:the_file / your / local / directory


使用putty从windows机器到linux机器

pscp -r <directory_to_copy> username@remotehost:/path/to/directory/on/remote/host

答案 1 :(得分:4)

在我的情况下,我必须使用

指定端口号
scp -P 2222 username@hostip:/directory/ /localdirectory/

答案 2 :(得分:1)

您的问题可能是由不同的原因引起的。我将在Linux中为您提供三种可能的方案:

  • 文件位置

使用 scp名称时,表示您的文件名称位于主目录目录中。当它位于主页中但位于另一个文件夹中时,例如, my_folder ,则应输入:

scp /home/my-username/my_folder/name my-username@127.0.0.1:/Path....
  • 您提交权限

您必须知道文件具有的文件许可权。如果您具有只读,则应进行更改。

要更改权限:

以root身份sudo caja(MATE桌面的默认文件管理器)或another文件管理器,然后用鼠标右键单击文件名称,选择属性 + 权限 并将其在其他上更改为读写

或使用chmod

  • 您的端口号

也许您的远程计算机或服务器只能与端口号通信,所以您应该输入 -P 和端口号。

scp -P 22 /home/my-username/my_folder/name my-usernamee@127.0.0.1 /var/www/html

答案 3 :(得分:1)

我有一个类似的问题。我试图从服务器复制到我的桌面,并且总是收到相同的本地路径消息。问题是,我已经通过ssh登录到我的服务器,因此它正在服务器路径中搜索本地路径。

解决方案:我不得不注销并再次运行该命令,它仍然有效

答案 4 :(得分:0)

请确保从中发送文件的文件夹包含空格!

我试图从VS代码终端从Windows计算机将文件发送到远程服务器,即使文件在此处,我也收到此错误。

这是因为文件所在的文件夹名称中包含空格...

答案 5 :(得分:0)

如果要复制文件夹中的所有内容,并且有特殊的端口,请使用此端口。 在Ubuntu 18.04和Mac OS X本地计算机上对我有效。

-r for recursive
-P for Port

scp -rP 1234 /Your_Directory/Source_Folder/ username@yourdomain.com:/target/folder

答案 6 :(得分:0)

正如@Astariul所说,文件路径可能会导致此错误。
此外,任何包含非ASCII字符的父目录(例如中文)都会导致此问题。
在这种情况下,您应该重命名父目录

答案 7 :(得分:0)

您还需要确保用户的.bashrc文件中包含什么。

我也遇到了这个荒谬的错误,因为我在其中放置了cdls命令,因为这意味着当用户从以下位置登录时让他们看到当前文件和目录。 ssh。

答案 8 :(得分:0)

文件名应该放在目录路径的末尾。也就是说,它应该是文件的完整路径。您正在从命令行执行此操作,并且您有该命令行的工作目录(在您的本地计算机上),这是您的文件将下载到的目录。命令中的最后一个参数只是您想要的文件名称。因此,首先,将目录更改为您希望文件所在的位置。我正在 Windows 机器上从 git bash 执行此操作,因此它看起来像这样:

cd C:\Users\myUserName\Downloads

现在我有了我想要文件去的工作目录:

scp -i 'c:\Users\myUserName\.ssh\AWSkeyfile.pem' ec2-user@xx.xxx.xxx.xxx:/home/ec2-user/IwantThisFile.tar IgotThisFile.tar

或者,就您而言:

cd /local/path/where/you/want/the/file/to/land
scp name@127.0.0.1:/local/machine/path/to/directory/filename filename

答案 9 :(得分:0)

这发生在我身上,我解决了。 这个问题可能是因为您尝试获取的文件不存在(文件名或文件夹名中有错别字?),或者因为您在 scp 中输入的用户不可见。 我的问题是我想从远程机器上获取的文件是由另一个用户(在我的情况下为 root)创建的,因此,这些文件是不可见的

为了修复,我做了: SSH 我的用户@我的服务器 chown myuser:myuser myfile 出口 scp mysuer@myserver:/home/myuser/myfile /localfolder/myfile