我希望能够将目录及其所有文件从本地计算机传输到远程计算机。我不太用SCP,所以我有点困惑。
我通过ssh连接到我的远程计算机,并输入命令
scp name127.0.0.1:local/machine/path/to/directory filename
local/machine/path/to/directory
是我在本地主机上所需目录中使用pwd
获得的值。
我目前收到错误
No such file or directory
答案 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
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)
解决方案:我不得不注销并再次运行该命令,它仍然有效
答案 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文件中包含什么。
我也遇到了这个荒谬的错误,因为我在其中放置了cd
和ls
命令,因为这意味着当用户从以下位置登录时让他们看到当前文件和目录。 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