【问题标题】:scp files from local to remote machine error: no such file or directoryscp 文件从本地到远程机器错误:没有这样的文件或目录
【发布时间】: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

【问题讨论】:

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

标签: scp


【解决方案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

            【讨论】:

              猜你喜欢
              • 2013-10-11
              • 2012-04-07
              • 1970-01-01
              • 2018-03-10
              • 2019-06-03
              • 2021-10-31
              • 1970-01-01
              • 2015-06-24
              • 1970-01-01
              相关资源
              最近更新 更多