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

Posted

技术标签:

【中文标题】scp 文件从本地到远程机器错误:没有这样的文件或目录【英文标题】:scp files from local to remote machine error: no such file or directory 【发布时间】:2014-12-08 09:20:21 【问题描述】:

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

我通过 ssh 连接到我的远程机器并输入了命令

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

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

我目前遇到错误

No such file or directory

【问题讨论】:

你的错误是你连接到远程机器然后输入了命令。您应该在您自己的系统中运行该命令,而不是在您连接时所在的目录中。 【参考方案1】:

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

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

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

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

scp "the_file" your_username@the_remote_host:the/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:the/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

【讨论】:

感谢您的帮助。这接近解决我的问题,但还没有完全解决。我希望能够发送目录及其所有内容。我试过的是scp -r path/to/directory username@remotehost 如果您需要明确指定端口号,请使用 -P portNumber。例如` scp -P 2200 bprajapati@192.168.202.124:/tmp/bs-404 ~/Documents` 只是一个重要的点让我感到困惑。如果对目标或源使用scp://user@host:port/path/to/file 语法,请注意端口号后的第一个“/”只是将端口与路径分隔开。因此,如果要使用绝对路径,请在端口号后使用两个反斜杠字符:scp://user@host:port//my/absolute/path/to/file【参考方案2】:

就我而言,我必须使用

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

【讨论】:

并确保您使用的是大写的 P 而不是 p。如果你问我 scp 给出的“没有这样的文件”错误消息是极具误导性的,甚至可能被归类为错误。例如,如果您在使用 ssh 时犯了同样的错误,它会显示“ssh: connect to host 2222 port 2222: Invalid argument”,这会更有帮助。【参考方案3】:

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

文件位置

当您使用 scp name 时,您的意思是您的文件 nameHome 目录中。当它在 Home 但在另一个 Folder 中时,例如,my_folder,你应该写:

scp /home/my-username/my_folder/name my-username@127.0.0.1:/Path....
您的文件权限

您必须知道您的文件拥有的文件权限。如果你有只读,你应该改变它。

更改权限:

作为 Root ,sudo caja(MATE 桌面的默认文件管理器)或another 文件管理器,然后用鼠标右键单击文件 name,选择 属性 + 权限 并在 GroupOther 上将其更改为 Read and write

或者chmod。

您的端口号

也许你的远程机器或服务器只能与一个端口号通信,所以你应该写-P和端口号。

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

【讨论】:

【参考方案4】:

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

解决方案:我必须注销并再次运行该命令,它可以工作

【讨论】:

谢谢。我没有意识到。这真的很有帮助。【参考方案5】:

确保您发送文件的文件夹包含空格!

我试图从 VS 代码终端从我的 windows 机器向远程服务器发送文件,即使文件在这里,我也会收到此错误。

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

【讨论】:

【参考方案6】:

如果您想复制文件夹中的所有内容 + 有一个特殊的端口,请使用此端口。 在 Ubuntu 18.04 和装有 Mac OS X 的本地机器上为我工作。

-r for recursive
-P for Port

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

【讨论】:

还有其他答案提供了 OP 的问题,它们是前段时间发布的。发布答案 see: How do I write a good answer? 时,请确保添加新的解决方案或更好的解释,尤其是在回答较老的问题时。【参考方案7】:

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

【讨论】:

【参考方案8】:

您还需要确定用户的 .bashrc 文件中有什么内容。

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

【讨论】:

【参考方案9】:

文件名应该放在目录路径的末尾。也就是说,它应该是文件的完整路径。您正在从命令行执行此操作,并且您有该命令行的工作目录(在您的本地计算机上),这是您的文件将被下载到的目录。命令中的最后一个参数只是您想要的文件名。因此,首先,将目录更改为您希望文件所在的位置。我在 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

【讨论】:

【参考方案10】:

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

为了修复,我做了: ssh myuser@myserver chown myuser:myuser 我的文件 出口 scp mysuer@myserver:/home/myuser/myfile /localfolder/myfile

【讨论】:

以上是关于scp 文件从本地到远程机器错误:没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

linux文件拷贝到其他机器

Liunx中虚拟机远程复制文件SCP命令

scp 文件从本地到远程服务器中的不同用户

用于将文件夹从本地计算机复制到远程服务器的 scp 命令语法 [关闭]

Linux 的 scp 命令详解

我想要在Linux环境下远程从windows下载一个文件到本地,我使用ftp和scp都不好用,求大神指点。